我正在CodeIgniter中开发一个表单,我希望根据name和password字段的验证状态动态更改输入字段类.我的问题是,当我提交一个有效的名称和无效的密码时,密码和名称都变成了红色. My desired output是如果名称是有效的,它将变成绿色,密码变成红色,因为它是无效的时提交. 任何建议或见解将不胜感激!
下面是我的视图或Github repository中的相关代码片段:
form.php(查看)
<input type="text" name="name" value="<?php echo set_value('name'); ?>" class=<?php echo (isset($name_valid) && $name_valid === true) ? '"text-green-500"' : '"text-red-500"'; ?>>
<input type="text" name="password" value="<?php echo set_value('password'); ?>" class="<?php echo (isset($password_valid) && $password_valid == 'true') ? 'text-green-500' : 'text-red-500'; ?>">
UserController.php(Controller方法)
public function create() {
$this->load->model('UserModel');
$data = array(
'name' => $this->input->post('name'),
'password' => $this->input->post('password')
);
$validated_result = $this->UserModel->validate_input($data);
if ($validated_result['name_valid'] === true) {
$data['name_valid'] = true;
}
if ($validated_result['password_valid'] === true) {
$data['password_valid'] = true;
}
$this->load->view('form', $data);
UserModel.php
public function validate_input($data) {
$this->load->library('form_validation');
$this->form_validation->set_rules('name', 'name', 'required|trim|regex_match[/^[^0-9]+$/]');
$this->form_validation->set_rules('password', 'Password', 'required|trim|min_length[5]|max_length[100]');
$result['name_valid'] = $this->form_validation->run(['name' => $data['name']]);
$result['password_valid'] = $this->form_validation->run(['password' => $data['password']]);
return $result;
}