Welcome Guest, Not a member yet? Register   Sign In
How to pass a param when using a model method as callable using form validation lib?
#1

(This post was last modified: 10-08-2017, 02:36 PM by happyape.)

This code

Code:
       $this->form_validation->set_rules(
           'username', 'Username',
           array(
               'required',
               array('username_callable', array($this->usersmodel, 'username_check_duplicate['.$data['username'].']'))
               //array('username_callable', array($this->usersmodel, 'username_check_duplicate'))
           ), array('username_callable' => 'Username duplicate'
           
           ')
       );

Throws this error

Code:
<h4>A PHP Error was encountered</h4>

<p>Severity: Warning</p>
<p>Message:  preg_match() expects parameter 2 to be string, array given</p>
<p>Filename: libraries/Form_validation.php</p>
<p>Line Number: 693</p>

This is line 693 from the Form_validation.php

Code:
if ( ! $callable && preg_match('/(.*?)\[(.*)\]/', $rule, $match))

Is this a bug as I should be able to pass a param using square brackets?

If I remove square brackets i.e.    array('username_callable', array($this->usersmodel, 'username_check_duplicate')) then I don't get this warning but I do need to pass a value.

However, if I test this in a test.php

Code:
    $rule= 'username_check_duplicate['.$data['username'].']';
        preg_match('/(.*?)\[(.*)\]/', $rule, $match);
        var_dump($match);

it seems to print correct output

Code:
array(3) {
  [0]=>
  string(41) "username_check_duplicate[john.smith]"
  [1]=>
  string(32) "username_check_duplicate"
  [2]=>
  string(7) "john.smith"
}

Not sure how to resolve this issue?
Reply


Messages In This Thread
How to pass a param when using a model method as callable using form validation lib? - by happyape - 10-08-2017, 02:22 PM



Theme © iAndrew 2016 - Forum software by © MyBB