CodeIgniter错误 - 消息:数组到字符串转换

时间:2014-10-25 21:47:08

标签: php codeigniter

我有一个非常简单的方法,用于从表单添加验证规则(如果没有ID,则需要密码,否则不是 - 新用户与更新用户)。

public function edit($id = NULL){
  $rules = $this->user_m->rules;
  $id || $rules['password'] .= '|required';
  $this->form_validation->set_rules($rules);
  $this->load->view('_layout_admin_main',$this->data);
}

$rules在模型中设置为(虽然我看不出它是如何相关的):

public $rules = array(
        'name' => array(
                'field' => 'name',
                'label' => 'Name',
                'rules' => 'trim|required|xss_clean'
        ),
        'email' => array(
                'field' => 'email',
                'label' => 'Email',
                'rules' => 'trim|required|valid_email|callback__unique_email|xss_clean'
        ),
        'password' => array(
                'field' => 'password',
                'label' => 'Password',
                'rules' => 'trim|matches[password_c]'
        ),
        'password_c' => array(
                'field' => 'password_c',
                'label' => 'Password Confirmation',
                'rules' => 'trim|matches[password]'
        ),
        'username' => array(
                'field' => 'username',
                'label' => 'Username',
                'rules' => 'trim|is_unique|xss_clean|required'
        )
    );

错误是消息:数组到字符串转换...行号:27 $id引用在$idNULL时明确导致它。设置$id时,它很好,花花公子。 $id绝对不是数组。

我知道这很模糊,但字面意思就是这样。如果您有任何想法,请提出问题,我会发布您需要的更多信息。

1 个答案:

答案 0 :(得分:2)

我认为将required与规则连接的方式存在一个小问题,请尝试以下方法:

public function edit($id = NULL){
  $rules = $this->user_m->rules;
  $id || $rules['password']['rules'] .= '|required'; // issue was here
  $this->form_validation->set_rules($rules);
  $this->load->view('_layout_admin_main',$this->data);
}