GROCERY CRUD:set_rules回调无法正常工作

时间:2014-05-12 16:04:38

标签: php codeigniter validation crud grocery-crud

我尝试使用回调函数验证密码字段。但是,当我使用以下代码时,所有验证在我输入1234(回调条件)时不再起作用。当我删除包含回调函数的验证时,其他验证工作正常..

这是我的验证规则

    $crud->set_rules('password', 'Password', 'callback_valid_password');
    $crud->set_rules('confirm_password', 'Password Confirmation', 'required|matches[password]');
    $crud->set_rules('email', 'Email', 'trim|required|valid_email');

这是我的回调函数

    function valid_password($str) {
    if ($str=="1234")
    {
        $crud->set_message('_valid_password', 'The field should be 1234');
        //do some pw validation
        return FALSE;
    }
    else
    {
        return TRUE;
    }
    }

请帮我找到这里有什么问题..提前谢谢 p.s - 我正在使用php 5.4版本和最新的杂货crud版本

3 个答案:

答案 0 :(得分:1)

function valid_password($str) {
   if ($str=="1234")
   {
      $this->form_validation->set_message('valid_password', 'The field should be 1234');
      //do some pw validation
      return FALSE;
   }
   else
   {
      return TRUE;
   }
}

答案 1 :(得分:0)

检查您的函数名称,您的回调名称为:callback_valid_password。 使用该名称更改函数的名称,而不仅仅是valid_password

答案 2 :(得分:0)

对于仍在努力寻找解决方案的人,请遵循清单。

  

您是将CodeIgniter用作MVC还是HMVC?

1。 HMVC

(A)-按照以下建议检查是否已更新文件( ./ application / libraries / Grocery_crud.php )。

(B)-在“ 类Grocery_CRUD扩展食品杂货_CRUD_States ”内的“ __ construct ”之前,添加“ 受保护的$ hmvc; < / strong>”

(C)-使用以下命令更新“ __construct”:

public function __construct($hmvc = null)
{
    $this->hmvc = $hmvc;
}

(D)-使用以下内容更新“ form_validation”:

protected function form_validation()
{
    if ($this->form_validation === null) {
        $this->form_validation = new grocery_CRUD_Form_validation();
        if ($this->hmvc) $this->form_validation->CI = $this->hmvc;
        $ci = &get_instance();
        $ci->load->library('form_validation');
        $ci->form_validation = $this->form_validation;
    }
    return $this->form_validation;
}

(E)-在控制器中使用“ $ crud = new Grocery_crud($ this); ”代替“ $ crud = new Grocery_crud(); ”。 / p>

[F)- GC set_rules示例:

$crud->set_rules("level_title", 'Level Title Label', 'trim|required|callback_unique_level_field_check');

(G)-回调方法示例:

public function unique_level_field_check ($level_title)
{
    if ( empty($level_title))
        {
            $this->form_validation->set_message('unique_level_field_check', "Level Title Label should be unique");
            return FALSE;
        }
    return TRUE;
}

2。 MVC

  

仅遵循F&G(上方)。


GroceryCRUD论坛:See details here