简体   繁体   中英

GROCERY CRUD: set_rules callbacks not working

I tried to validate the password field using a callback function. But when I use the following code, all validations do not work any more WHEN I TYPE 1234 (callback condition). When I remove the validation which contains the callback function, other validations work perfectly..

This is my validation rules

    $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');

Here is my callback function

    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;
    }
    }

Please help me to find what is wrong here.. Thank you in advance ps - I am using php 5.4 version with the latest grocery crud version

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;
   }
}

For those who are still struggling to find the solution, please follow the checklist.

Are you using CodeIgniter as MVC or HMVC?

1. HMVC

(A) - Check if you have updated the file ( ./application/libraries/Grocery_crud.php ) as suggested below.

(B) - Before " __construct " inside " " class Grocery_CRUD extends grocery_CRUD_States " add " protected $hmvc; "

(C) - Update "__construct" with as below:

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

(D) - Update "form_validation" with as below:

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) - Use " $crud = new Grocery_crud($this); " instead " $crud = new Grocery_crud(); " in your Controller.

(F) - GC set_rules example:

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

(G) - Callback method example:

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

Follow F & G only (above).


GroceryCRUD Forum: See details here

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM