Внутри класса UsersTable я пытаюсь реализовать пользовательскую проверку в соответствии с CakeBook, но получаю сообщение об ошибке Object of class App\Model\Table\UsersTable could not be converted to string [CORE/src/Validation/ValidationRule.php, line 128]
. Ниже мой код в UsersTable.php.
class UsersTable extends Table{
public function validationDefault(Validator $validator){
$validator->add(
"password",[
"notEmpty"=>[
"notEmpty"
],
"custom"=>[
"rule"=>[$this,"customFunction"],
"message"=>"foo"
]
]
);
}
public function customFunction($value,$context){
//some logic here
}
}
Глядя на ValidationRule.php
в основной библиотеке CakePHP, я заметил, что array_shift()
(в строке 185) берет первый элемент [$this,"customFunction"]
, то есть $this
, и присваивает его $value
. Но на самом деле $value
должно быть [$this,"customFunction"]
. Поэтому, чтобы мой код работал без ошибок, мне нужно было добавить еще одно вложение в [$this,"customFunction"]
(так что теперь [[$this,"customFunction"]]
). Я что-то не понимаю или это какой-то баг?
UPD: Эта проблема исправлена.