以下表单验证规则是什么意思?我想要一个逻辑,即使其中一个表单帖子被设置......它应该被允许

时间:2014-12-01 11:21:20

标签: codeigniter

  $this->form_validation->set_rules('newusername', 'newfullname', 'newcity','newemail');

//是set_rules正确。如果设置了任何一个具有以上名称的输入字段,我想要。它应该通过验证。如果有任何更正,请帮助我。

2 个答案:

答案 0 :(得分:1)

您可能应该再次阅读本手册。如果您希望至少填写其中一个,则需要编写自己的验证。

使用以下规则:

public $rules = array(
    'newusername' => array(
        'field' => 'newusername',
        'label' => 'New User Name',
        'rules' => 'trim|xss_clean|callback_needone' 
     ),
    'newfullname' => array(
        'field' => 'newusername',
        'label' => 'New Full Name',
        'rules' => 'trim|xss_clean|callback_needone' 
     ),
    'newcity' => array(
        'field' => 'newcity',
        'label' => 'New City',
        'rules' => 'trim|xss_clean|callback_needone' 
     ),
    'newemail' => array(
        'field' => 'newemail',
        'label' => 'New Email',
        'rules' => 'trim|xss_clean|callback_needone' 
     )
 )
在你的控制器中你需要写

public function needone(){
   if ( empty($this->input->post('newusername')) && empty($this->input->post('newfullname')) && empty($this->input->post('newcity')) && empty($this->input->post('newmail')) ) {
     $this->form_validation->set_message('needone', 'At least one field must be entered');
      return FALSE;
   }
   return TRUE;
}

将规则放在任何表单的字段上,或者将所有字段放在hilite所在组中,这取决于你。

答案 1 :(得分:0)

表单中的每个输入字段都需要它自己的验证规则。这应该是这样的;

$this->form_validation->set_rules('field name', 'human name', 'rules');

https://ellislab.com/codeigniter/user-guide/libraries/form_validation.html#validationrules

所以,你会有4个set_rules函数,像这样;

$this->form_validation->set_rules('newusername', 'New username', 'trim|xss_clean|required');
$this->form_validation->set_rules('newfullname', 'New full name', 'trim|xss_clean|required');
$this->form_validation->set_rules('newcity', 'New City', 'trim|xss_clean|required');
$this->form_validation->set_rules('newemail', 'New Email', 'trim|xss_clean|required');

https://ellislab.com/codeigniter/user-guide/libraries/form_validation.html#cascadingrules

以下是规则参考,所有可用规则;

https://ellislab.com/codeigniter/user-guide/libraries/form_validation.html#rulereference


现在,要检查是否设置了 ANY 项,我会这样做;

if ($this->input->post('newusername') OR $this->input->post('newusername') OR $this->input->post('newusername') OR $this->input->post('newusername'))
{
    // One of them is set
}
else
{
    // Nothing is set
}