Я пытаюсь настроить плагин SearchOfCake Search (https://github.com/FriendsOfCake/search) на CakePHP 3.1
Я выполнил инструкции в документах и установил форму в своем index.ctp и попытался фильтровать только по названию с помощью формы.
Но похоже, что после этого метод обработки данных формы не обрабатывается методом. В URL-адресе нет параметров поиска. Если я набираю URL вручную, например: /painting/index? title= blob, он корректно фильтрует. Поэтому сам плагин работает, я думаю, проблема связана с формой, потому что после нажатия кнопки "Отправить" это просто ничего не делает.
Я новичок в CakePHP и до сих пор имею лишь ограниченное знание. Информация в документации к плагину очень проста, поэтому я не уверен, что она может принять некоторые дополнительные настройки, не упоминая их!
Если я использую форму для поиска "blob", например, страница загружается снова без фильтрации, а в DebugKit говорится: Post Data - заголовок blob..... Но: нет данных о querystring (если это что-то значит..)
Может ли кто-нибудь помочь мне разобраться, что я делаю неправильно? Я думаю, что что-то отсутствует в моем контроллере или в настройках формы в представлении, но я не могу понять, что. Спасибо за любую помощь!
Вот моя настройка:
class PaintingsTable extends Table
{
public function searchConfiguration()
{
$search = new Manager($this);
$search->like('title', [
'field' => $this->aliasField('title')
]);
return $search;
}
class PaintingsController extends AppController
{
public function initialize()
{
parent::initialize();
if ($this->request->action === 'index') {
$this->loadComponent('Search.Prg');
}
}
public function index()
{
$query = $this->Paintings
->find('search',
$this->Paintings->filterParams($this->request->query))
->contain(['Artists']);
$this->set('paintings', $this->paginate($query));
$this->set('_serialize', ['paintings']);
}
}
In Paintings - index.ctp:
<?= $this->Form->create(); ?>
<?= $this->Form->input('title') ?>
<?= $this->Form->button('Filter', ['type' => 'submit']) ?>
<?= $this->Html->link('Reset', ['action' => 'index']) ?>
<?= $this->Form->end()?>
Хорошо, что я плохой! Теперь я знаю, в чем проблема: это был не код. Если кто-то сталкивается с подобной проблемой:
Ранее я установил плагин для поиска CakeDC и удалил его из требуемого списка в composer.json, но забыл обновить композитор, чтобы он действительно удалил его.
Теперь я заметил, что папка CakeDC все еще находится в папке "vendor". Поскольку оба они используют имя "Поиск" в качестве имени плагина, торт должен быть немного сбит с толку. Как только я обновил композитор, он удалил плагин CakeDC, и вышеописанная настройка работала отлично с плагином FriendsOfCake.