有没有办法更改Codeigniter中validation_errors()的输出?
我正在为Codeigniter中的用户开发登录功能 这是我的用户控制器的一部分:有没有办法更改Codeigniter中validation_errors()的输出?,codeigniter,validation,authentication,customization,Codeigniter,Validation,Authentication,Customization,我正在为Codeigniter中的用户开发登录功能 这是我的用户控制器的一部分: public function login() { $name = $this->input->post('username'); $pass = $this->input->post('pass'); $this->form_validation->set_rules('username', 'Användarnamn', 'required');
public function login() {
$name = $this->input->post('username');
$pass = $this->input->post('pass');
$this->form_validation->set_rules('username', 'Användarnamn', 'required');
$this->form_validation->set_rules('pass', 'Lösenord', 'required');
//Username or password not given
if ($this->form_validation->run() == false) {
$succesful = false;
}
else {
//Form itself validates (Username and password is given)
//Check if username and password matches against some user in the database
$um = new Usermodel();
$um->setUsername($name);
$um->setPassword($pass);
//True if account exists or false if it does not
$succesful = $um->accountExists();
}
$data = array();
$succesful = false; //TEMP
if ($succesful === false) {
$data['error'] = 'groovy';
$this->form_validation->set_message('username', 'groovy' );
}
//Show template
$data['loginform'] = $this->loginform();
$data['registerform'] = $this->registerform();
$this->load->view('home', $data);
}
$succesful = false; //TEMP
if ($succesful === false) {
$this->form_validation->add_error('username', 'Username is groovy!');
}
“我的视图”(主页)中的代码段如下所示:
<?php
echo validation_errors(); //Show errors if they occur on submit
if (isset($error)) {
echo $error;
}
if (isset($loginform)) {
echo $loginform;
}
if (isset($registerform)) {
echo $registerform;
}
?>
与
在我看来(其中validation\u errors()
应该返回groovy)
如果我理解正确,这只是在输入用户名不正确时(根据规则)指定值
$this->form_validation->set_message('username', 'groovy' );
扩展Form Validation类并添加一个自定义函数,将消息添加到错误数组中(其中
Validation\u errors()
获取其消息)
库/MY_Form_validation.php
class MY_Form_validation extends CI_Form_validation
{
public function add_error($field, $message)
{
if ( ! isset($this->_error_array[$field]))
{
$this->_error_array[$field] = $message;
}
return;
}
}
控制器:
public function login() {
$name = $this->input->post('username');
$pass = $this->input->post('pass');
$this->form_validation->set_rules('username', 'Användarnamn', 'required');
$this->form_validation->set_rules('pass', 'Lösenord', 'required');
//Username or password not given
if ($this->form_validation->run() == false) {
$succesful = false;
}
else {
//Form itself validates (Username and password is given)
//Check if username and password matches against some user in the database
$um = new Usermodel();
$um->setUsername($name);
$um->setPassword($pass);
//True if account exists or false if it does not
$succesful = $um->accountExists();
}
$data = array();
$succesful = false; //TEMP
if ($succesful === false) {
$data['error'] = 'groovy';
$this->form_validation->set_message('username', 'groovy' );
}
//Show template
$data['loginform'] = $this->loginform();
$data['registerform'] = $this->registerform();
$this->load->view('home', $data);
}
$succesful = false; //TEMP
if ($succesful === false) {
$this->form_validation->add_error('username', 'Username is groovy!');
}
这有用吗?不,不是真的。我只是想知道这是否可能。我认为这不是因为实际表单的验证是正确的(用户名和密码已提交)。当这些与我的数据库不匹配时,我想回显一条消息。我们有一个codeigniter站点,其中有一个名为my_Form_validation的自定义库,其中有带有验证检查的自定义函数。我想这个问题可能会有帮助。在这个博客的答案中有一个链接,包含更多信息:非常感谢!我还没有测试代码,但我完全理解你的意思,这就可以了!谢谢