php - 如何在codeigniter中将表单提交到不同的路由时保持验证错误不变?
问题描述
我想提交表单以form/submit
从我的路线进行contact
路线。我需要的是在当前路线上显示的验证错误,contact
而不是在form/submit
========= contact view =========
<?php echo validation_errors(); ?>
<?php echo form_open_multipart('form/submit'); ?>
<?php echo form_input(array(
'type' => 'email',
'name' => 'yourEmail',
'required' => 'true'
)); ?>
<input type="submit">
====== 'routes' =======
$route['form/submit']['POST'] = 'form/submit';
如果有错误,这是我想保持 url 相同的问题,如果我重定向而不是加载视图,我会丢失我的错误消息,我试图不使用会话来存储错误消息。
======= 'controllers' =======
public function submit()
{
$this->load->helper('form');
$this->load->library('form_validation');
$this->form_validation->set_rules('email', 'Email', 'required|email');
if ($this->form_validation->run() === FALSE)
{
$this->load->view('contact');
}
else
{
$this->prison_model->set_prison();
$this->load->view('success');
}
解决方案
为什么不使用 ajax 提交表单。
如果您不想使用 ajax,则创建一个Prison库类而不继承 codeignitor 类。
将主页 url 传递给 open_multipart()。通过这样做,所有表单提交信息都将传递给主控制器,在该创建监狱对象并调用 create()。之后加载主控制器中的任何视图。
您应该只使用监狱类进行处理。
推荐阅读
- python - 将每个导出的文件放在自己的文件夹中
- c++ - 在 C++ 中使用深拷贝的运算符重载
- javascript - JavaScript ajax 行为
- javascript - 如何在 jquery 中隐藏(或显示)子下拉列表(动态 html)?
- powershell - powershell - 字符串变量中的变量即使在声明后也应更新
- c - 计算所有数字的幂,直到 n-1
- javascript - `model` 属性似乎什么都不做
- python - 从 CGI 脚本执行 Selenium 脚本
- asp.net - Asp.Net core 2 多语言
- python - 在 .bat 中使用和参数运行 .py 文件