【发布时间】:2017-02-27 15:03:35
【问题描述】:
我想在注册表单上显示验证错误消息。当数据库中已经存在登录时,应该显示消息。
我的错误:无法访问与您的字段名称 Login_r 对应的错误消息。(规则) 请尝试帮助我,这非常重要。谢谢
config/form_validation.php
$config = array(
'login' => array(
array(
'field' => 'login',
'label' => 'Login',
'rules' => 'required'
),
array(
'field' => 'password',
'label' => 'Password',
'rules' => 'required'
)
),
'register' => array(
array(
'field' => 'name_r',
'label' => 'Name',
'rules' => 'required|alpha'
),
array(
'field' => 'lastname_r',
'label' => 'Lastname',
'rules' => 'required|alpha'
),
array(
'field' => 'login_r',
'label' => 'Login_r',
'rules' => 'required|callback_rule'
),
array(
'field' => 'password_r',
'label' => 'Password_r',
'rules' => 'required|min_length[4]|max_length[12]'
),
array(
'field' => 'confirm_password_r',
'label' => 'Confirm_password',
'rules' => 'required|matches[password_r]'
),
array(
'field' => 'email_r',
'label' => 'Email',
'rules' => 'required|valid_email'
),
array(
'field' => 'adres_r',
'label' => 'Adres',
'rules' => 'required'
)
),
);
控制器:
if ($this->form_validation->run('register') == false)
{
$this->form_validation->set_message('rule', 'Dzialaj !');
$this->load->view('content/register');
}
else
{
$this->load->view('content/index');
$name_r = $this->input->post('name_r');
$lastname_r = $this->input->post('lastname_r');
$login_r = $this->input->post('login_r');
$password_r = $this->input->post('password_r');
$email_r = $this->input->post('email_r');
$adres_r = $this->input->post('adres_r');
$data_db = array(
'name' => $name_r,
'lastname' => $lastname_r,
'login' => $login_r,
'password' => $password_r,
'email' => $email_r,
'adres' => $adres_r
);
$this->Main_model->register($data_db);
}
型号:
public function register($data_db) {
$this->db->where('login',$data_db['login']);
$query = $this->db->get('users');
$row = $query->row();
if($row->login){
$this->form_validation->set_message('rule', 'Error Message');
} else {
$this->db->insert('users', $data_db);
}
视图(表单)
<?php
echo validation_errors();
echo form_open();
echo 'Imie: ' . form_input('name_r');
echo br(2);
echo 'Nazwisko: ' . form_input('lastname_r');
echo br(2);
echo 'Login: ' . form_input('login_r');
echo br(2);
echo 'Haslo: ' . form_password('password_r');
echo br(2);
echo 'Potwierdz Haslo: ' . form_password('confirm_password_r');
echo br(2);
echo 'E-mail: ' . form_input('email_r');
echo br(2);
echo 'Adres: ' . form_input('adres_r');
echo br(1);
echo form_submit('zarejestrowany','Stworz konto');
echo form_close();
?>
</div>
</div>
</div>
<!--Import jQuery before materialize.js-->
<script type="text/javascript" src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
<script type="text/javascript" src="js/materialize.min.js"></script>
</body>
</html>
【问题讨论】:
-
您对 Login_r 的验证指定使用称为“规则”的回调,但您的代码中根本没有列出任何回调。您是否在任何地方创建了此验证的回调?
-
哦,是的。因为我试图在模型、控制器和视图上运行它,但是在每个不起作用的地方。
-
哦等等,Controller 的第三行有回调
-
不...回调将成为控制器中的一个单独函数。我不明白你的第一条评论,但这里没有发布回调。 CI 手册:codeigniter.com/userguide3/libraries/…
-
我不明白。我的验证规则在另一个文件 config/form_validation.php 中,并且有一个回调。 'rules' => 'required|callback_rule' 嗯....
标签: php forms codeigniter validation