CodeIgniter - 无法访问与您的字段名称密码对应的错误消息。(pword_check)

时间:2015-09-19 07:47:57

标签: php codeigniter validation hmvc

我是codeIgniter的新手,我刚刚陷入困境。我正在使用HMVC扩展,并在验证时收到以下错误:

无法访问与您的字段名称密码相对应的错误消息。(pword_check)

任何帮助将不胜感激

代码:

public function submit()
{


    $this->load->library('form_validation');

    $this->form_validation->set_rules('username', 'Username', 'required|max_length[30]|xss_clean');
    $this->form_validation->set_rules('pword', 'Password', 'required|max_length[30]|callback_pword_check|xss_clean');

    if ($this->form_validation->run() == FALSE)
    {
        $this->login();
    }
    else
    {
        echo 'Success'; die();
    }
}

public function pword_check($str)
{

    if ($str == 'test')
    {
        $this->form_validation->set_message('pword_check', 'The %s field can not be the word "test"');
        return FALSE;
    }
    else
    {
        return TRUE;
    }
}

6 个答案:

答案 0 :(得分:16)

  

xss_clean不再是Codeingitore 3中表单验证的一部分

只需从验证邮件

中删除xss_clean即可
$this->form_validation->set_rules('pword', 'Password', 'required|max_length[30]|callback_pword_check');

如果您确实需要应用该规则,那么您现在还应该加载安全助手,其中包含xss_clean()作为常规功能,因此也可以用作验证规则。

转到application/config/autoload.php :

$autoload['helper'] = array('security');

或者,在表单验证之前

$this->load->helper('security');

答案 1 :(得分:14)

Hello Guys我找到了在hmvc codeIgniter中使用call_backs的解决方案。 我想为其他人发布解决方案。

<强>解决方案:

<强> 1。在libraries文件夹中创建MY_Form_validation.php文件并在其中粘贴以下代码。

 if (!defined('BASEPATH')) exit('No direct script access allowed');
    class MY_Form_validation extends CI_Form_validation
    {

    function run($module = '', $group = '')
    {
       (is_object($module)) AND $this->CI = &$module;
        return parent::run($group);
    }
}

  1. 并将if ($this->form_validation->run() == FALSE)更改为if ($this->form_validation->run($this) == FALSE) ,这就是所有人..

答案 2 :(得分:1)

public function pword_check($str)
{

    if ($str == 'test')
    {
        $this->form_validation->set_message(  __FUNCTION__ , 'The %s field can not be the word "test"');
        return FALSE;
    }
    else
    {
        return TRUE;
    }
}

//运作良好

https://github.com/bcit-ci/CodeIgniter/issues/3908

答案 3 :(得分:0)

The reason for this error is you didn't loaded the security helper the following is the way enable security helper with autoload.php in config folder or you can directly load the helper as mentioned last line of this post

And if, despite everything, you really need it, go to application/config/autoload.php :

$autoload['helper'] = array('security'); Or, before your form validation $this->load->helper('security');

答案 4 :(得分:0)

将来的搜索。当此错误显示时,您需要检查两个 3 事项。

  1. 如果与

    相同,请检查回调函数的名称

    $ this-&gt; form_validation-&gt; set_rules('pword','密码','required | max_length [30] | callback_ pword_check

    public function pword_check($str){                                              
      if ($str == 'test'){
        $this->form_validation->set_message('pword_check', 'The %s field can not be the word "test"');
        return FALSE;
      }
      else{
        return TRUE;
      }                                                                              
    }
    
      

    *公共职能 pword_check ($ str){

         

    * set_message(' pword_check ','%s字段......

  2. 在codeigniter 2.X中你可以这样做

      

    $ this-&gt; form_validation-&gt; run($ this)== TRUE

    在3.x中应该是这样的

      

    $ this-&gt; form_validation-&gt; run()== TRUE

    你需要在__construct()

    上添加这两行代码
    function __construct(){                                     
      parent::__construct();                                                      
      $this->load->library('form_validation');
      $this->form_validation->CI =& $this;                                           
    } 
    
  3. 在您的应用程序/库/ MY_Form_validation.php

    上添加此文件
    <?php                                                                
    class MY_Form_validation extends CI_Form_validation{                                     
        public $CI;                                                                                               
    } 
    
  4. 干杯!见https://bitbucket.org/wiredesignz/codeigniter-modular-extensions-hmvc/src/f77a3fc9a6fd?at=codeigniter-3.x

    https://www.youtube.com/watch?v=pp4Y_bIhASY&list=PLBEpR3pmwCayNcTCUWlUToK4qIQfFQCCm&index=8

    供参考。

答案 5 :(得分:0)

在对文件application/config/autoload.php进行助手安全检查之前 在库中添加form_validation

$autoload['libraries'] = array('form_validation');

别忘了增加安全性

$autoload['helper'] = array('security');

尝试