首页 > 解决方案 > 如何在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');
      }

标签: phpcodeigniter-3

解决方案


为什么不使用 ajax 提交表单。

如果您不想使用 ajax,则创建一个Prison库类而不继承 codeignitor 类。

将主页 url 传递给 open_multipart()。通过这样做,所有表单提交信息都将传递给主控制器,在该创建监狱对象并调用 create()。之后加载主控制器中的任何视图。

您应该只使用监狱类进行处理。


推荐阅读