Для базового поиска модели в Cake я использовал метод postConditions .Это работало хорошо, пока я не включил защиту CSRF через компонент безопасности.
Включение этого компонента приводит к SQL Error: 1054: Unknown column '_Token.key' in 'where clause [...]
, и я вижу, что это происходит, потому что $this->data
изменилось с:
Array (
[CrmPerson] => Array
(
[firstname] => john
[surname] =>
[email] =>
)
)
.... до .....
Array
(
[_Token] => Array
(
[key] => 03aef38c3c2f631d6dc50baa98c7327a3fe6d0cd
[fields] => 71d0fa03bc4e10f6f4d0de8f91674100836ea498%3A
)
[CrmPerson] => Array
(
[firstname] => john
[surname] =>
[email] =>
)
)
Другими словами, присутствие [_Token]
расстраивает вызов $this->postConditions
.
Вся моя функция find () в контроллере выглядит следующим образом:
function find() {
if(!empty($this->data)) {
$this->CrmPerson->recursive = 0;
$conditions = $this->postConditions(
$this->data,
array(
'firstname' => 'LIKE',
'surname' => 'LIKE',
'email' => 'LIKE'
)
);
$this->paginate = array(
'order' => 'CrmPerson.created DESC',
'limit' => '40',
);
$this->set('crmPeople', $this->paginate($conditions));
}
}
Я пытался изменить $this->data
на $this->data['CrmPerson']
, но методу postConditions нужны данные для запуска на один уровень вышев массиве.
Нужно ли создавать целый новый массив для передачи postConditions или есть более простой вариант, которого я не вижу?