以两种不同的方式设置表单验证的规则

时间:2016-02-04 12:43:11

标签: forms validation codeigniter-3

我的所有规则都位于/config/form_validation.php的文件中:

$config = array(
    'cadastro_pessoa_fisica' => array(
        array(
            'field' => 'imagem',
            'label' => 'IMAGEM',
            'rules' => 'callback__validate_image_file'
        ),
        array(
            'field' => 'nome_razao_social',
            'label' => 'NOME',
            'rules' => 'required'
        ),
        ...
        ...

但我直接在控制器中设置了一条规则。在编辑用户的信息和电子邮件发生变化时,规则是在继续之前应用这些规则:

public function edit($id)
{
    $this->input->post('tipo_usuario') === 'F' ? $validator = 'editar_pessoa_fisica' : $validator = 'editar_pessoa_juridica';

    if ($this->input->post('email') !== $this->input->post('novoemail')) {
        $this->form_validation->set_rules('email', 'E-MAIL', 'required|valid_email|is_unique[usuario.email]');
    }

    if ($this->form_validation->run($validator)) {...}

问题是只有电子邮件规则显示任何错误。如果我将姓名,电话和电子邮件字段留空,则错误消息仅适用于电子邮件字段。当它们失败时,似乎只能看到控制器中的验证规则。

修改

这是编辑表单的填充方式。登录时,用户的id存储在会话中,当访问编辑视图时,会进行查询以获取用户的信息。

public function edit_panel()
{
    if ($this->session->has_userdata('email')) {
        $data['id_usuario'] = $this->session->userdata('id_usuario');
        $data['usuario'] = $this->Usuarios_model->get($data['id_usuario']);
        $data['page'] = $this->config->item('admin_template_dir_auto') . $this->redirect_to_user_panel(true);
        $this->load->view($this->_container, $data);
    } else {
        $this->session->set_flashdata('message', 'Cadastre-se ou entre para acessar');
        redirect('/cadastro', 'refresh');
    }
}

0 个答案:

没有答案