如何将数据从控制器传递到Codeigniter中的for_validation配置文件?

时间:2017-05-09 04:34:36

标签: php codeigniter codeigniter-3

我使用config form_validation.php,如何从控制器向该文件发送变量(form_validation.php)?

在我的form_validation.php中,我有:

 array(
    'field' => 'edituser_email',
    'label' => 'Email',
    'rules' => "required|trim|xss_clean|valid_email|edit_unique[users.email.$user_id]",
    'errors' => array(
             'required' => 'Campo obligatorio.',
             'valid_email' => 'Formato de correo no válido.',
             'edit_unique' => 'Ya existe un usuario con este correo.'
              )
    )

我需要发送" user_id"变量通过Controller。

我已经尝试过:

$data['user_id'] = $id;
if ($this->form_validation->run('edit_user',$data) === FALSE)

但我得到错误:

消息:未定义的变量:user_id。

感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

无需将参数传递给$this->form_validation->run(),只需在执行之前设置规则。

$this->form_validation->set_rules('name', lang('title'), 'required|trim');
$this->form_validation->set_rules('description', lang('description'), 'required');
$this->form_validation->set_rules('slug', lang('slug'), 'trim|required|is_unique[categories.slug]|alpha_dash');

 if ($this->form_validation->run() == true)
 {

        $data = array(
            'name' => $this->input->post('name'),
            'description' => $this->input->post('description'),
            'parent_id' => $this->input->post('parent_category'),
            'slug' => $this->input->post('slug'),
            'active' => $this->input->post('active'),
            'private' => $this->input->post('private'),
        );
 }

答案 1 :(得分:1)

我不尝试,但我认为,如果你向数组帖子添加一个变量,就像这样,它可以工作。

$this->input->post['user_id'] = $user_id;

答案 2 :(得分:1)

作为文档here 在文档中,如果要覆盖发布数据,则需要在运行验证之前先设置数据。

代表:

$post_data = array_merge(array('user_id' => $id), $this->input->post(NULL, TRUE)); //merge existing post data with your custom field

$this->form_validation->set_data($post_data);

然后

if ($this->form_validation->run('edit_user') === FALSE){
  // error view
}
else{
// success view

}