【问题标题】:CodeIgniter validation logicCodeIgniter 验证逻辑
【发布时间】:2012-05-03 15:24:27
【问题描述】:

我正在构建一个小型应用程序,它基本上会显示 3 种形式...第一个是可选的,第二个不是,第三个不是。我希望每个表单都是一个单独的 url(控制器)。在阅读 CodeIgniter form_validation 的文档时,该表单似乎只能提交给它自己进行验证。如果是这样的话,表格将继续显示在同一页面上......他基本上就是我所拥有的......并评论了我想做的事情......

class Index extends CI_Controller {

 function __construct()
    {
        parent::__construct();
    }

        function index()
        {
        //load front page that contains first form...
                $content['title'] = 'Home';
                $content['view'] = 'pages/index';
                $this->load->view('template/default',$content);

        }
        function step_two()
        {
           //recieve information from front page. validate form. If validation is 
           //successful continue to step_two(url) if it fails redirect 
           //to front page with error...

          $this->form_validation->set_rules('serial', 'Serial Number', 'required');

          if ($this->form_validation->run() == FALSE)
          {
           //return to front page...
          }else{
           //do necessary work and load step_two view   
          } 


        }

}

?> 

这是我的想法。但我注意到的是,除非表单提交给它自己,否则你不能进行表单验证。有任何想法吗?我应该验证表单然后重定向到新的 url/函数吗?

谢谢大家...

【问题讨论】:

  • 验证成功时重定向...

标签: php codeigniter validation


【解决方案1】:

你就是这样做的

控制器 -

public function step1()
{
        if ($this->form_validation->run() == FALSE)
        {
            $this->load->view('myform1');
        }
        else
        {
            //do something to post data
            redirect('/controller/step2');
        }
}


public function step2()
{
        if ($this->form_validation->run() == FALSE)
        {
            $this->load->view('myform2');
        }
        else
        {
            //do something to post data

            redirect('/controller/step3');
        }
}

所以对您的问题的回答是肯定的,您将这些保留在相同的方法中并在成功验证时重定向。

【讨论】:

  • 所以如果说...我想阻止人们访问 step3 除非成功验证表单 2,您是否会在成功验证后设置一个会话变量并在 step3 函数中检查它?跨度>
  • 是的,会话变量不是一个坏主意。或者这取决于这些表单是如何相互关联的 - 例如 - 如果 step1 创建新的 db 记录,那么也许您可以在 step2 中显示表单之前进行快速检查
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-23
  • 1970-01-01
  • 2014-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多