CakePHP:FriendsOfCake搜索插件不过滤表单提交



我正在尝试设置FriendsOfCake搜索插件(https://github.com/FriendsOfCake/search)关于CakePHP 3.1

我按照文档中的说明,在我的index.ctp中设置了一个表单,并尝试使用表单仅按标题进行筛选。

但是,表单发布数据之后似乎没有经过该方法的处理。URL中没有显示任何搜索参数。如果我手动键入URL,比如:/paints/index?title=blob它确实过滤正确。所以插件本身正在工作,我想问题出在表单上,因为按下Submit按钮后,它什么都不做。

我是CakePHP的新手,到目前为止知识有限。插件文档中的信息是非常基本的,所以我不确定它是否会假设更多的设置而不提及它们?!

例如,如果我使用该表单搜索"blob",则页面将在不进行筛选的情况下再次加载,并且在DebugKit中显示:Post Data--title blob。。。。。但是:没有查询字符串数据(如果这意味着什么…)

有人能帮我弄清楚我做错了什么吗?我认为我的控制器或视图中的表单设置中缺少一些东西,但我不知道是什么。谢谢你的帮助!

这是我的设置:

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中的必需列表中删除,但忘记更新composer,所以他实际上删除了它。

我现在注意到CakeDC文件夹仍然在"vendor"文件夹中。由于他们都使用"搜索"作为插件名称,Cake一定有点困惑。当我更新composer时,它删除了CakeDC插件,上面的设置与FriendsOfCake插件配合得很好。

最新更新