我有一个非常简单的方法,用于从表单添加验证规则(如果没有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
引用在$id
为NULL
时明确导致它。设置$id
时,它很好,花花公子。 $id
绝对不是数组。
我知道这很模糊,但字面意思就是这样。如果您有任何想法,请提出问题,我会发布您需要的更多信息。
答案 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);
}