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

时间:2015-11-09 13:40:00

标签: php forms cakephp

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

我按照文档中的说明操作并在index.ctp中设置了一个表单,并尝试仅使用表单过滤标题。

但似乎表格后期数据不会被该方法处理。 URL中没有显示搜索参数。 如果我手动输入URL,如:/ paintings / 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()?>

1 个答案:

答案 0 :(得分:1)

好吧,我的坏!我现在知道问题是什么......这不是代码。如果有人遇到类似的问题:

我之前已经设置了CakeDC搜索插件,并已将其从composer.json中的必需列表中删除,但忘记更新作曲家,以便他实际删除了它。

我现在注意到CakeDC文件夹仍在“vendor”文件夹中。由于他们都使用名称“搜索”作为插件名称,因此Cake必须有点混淆。一旦我更新了作曲家,它就删除了CakeDC插件,上面的设置与FriendsOfCake插件一起工作得很好。