如何在form_validation.php中为每个表单分隔配置数组,以避免一次显示所有错误 - CodeIgniter

时间:2017-04-27 06:27:51

标签: php forms codeigniter

我正在使用2个表单(登录/注册)的视图上进行验证。

我使用isset方法检查提交的表单并相应地运行验证。

控制器功能登录

   public function login(){

    if (isset ($_POST['btnSignIn']))    
    {        
  if($this->form_validation->run() == FALSE)  {
        // do tasks
    }
}

控制器功能寄存器

   public function register(){

    if (isset ($_POST['btnSignUp']))    
    {        
  if($this->form_validation->run() == FALSE)  {
        // do tasks
    }
}

即使有这些代码,提交任何一个表单都会显示两个表单的错误。

但是我在form_validation.php中初始化了配置数组,其中包含两种形式的所有控件。

从配置数组中删除任何这些控件是我可以阻止显示错误的唯一方法,但它永远不会显示。

我的问题是,有什么方法可以实现这个来分离配置数组或验证以正确显示消息。

我希望我的问题很明确。

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

这就是我的工作方式。

如CodeIgniter文档中所述。 https://www.codeigniter.com/userguide3/libraries/form_validation.html#saving-sets-of-validation-rules-to-a-config-file

这就是我们如何为每个表单分隔在配置数组中初始化的控件。

$config = array(
    'signup' => array(
            array(
                    'field' => 'username',
                    'label' => 'Username',
                    'rules' => 'required'
            ),

    ),
    'email' => array(
            array(
                    'field' => 'emailaddress',
                    'label' => 'EmailAddress',
                    'rules' => 'required|valid_email'
            ),
            a
    )
);

在控制器中运行验证时,我们需要使用

$this->form_validation->run('signin')
// this will run validation only for controls initialized under signin array

而不是

$this->form_validation->run()
// this will run validation only for all controls