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?