繁体   English   中英

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

[英]CakePHP: FriendsOfCake Search plugin not filtering on form submit

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

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

但似乎表单发布数据之后没有被该方法处理。 URL 中没有显示搜索参数。 如果我手动输入 URL,例如:/paintings/index?title=blob,它会正确过滤。 所以插件本身正在工作,我想问题出在表单上,​​因为按下提交按钮后它什么也不做。

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

例如,如果我使用表单搜索“blob”,页面将在没有过滤的情况下再次加载,并且在 DebugKit 中显示:发布数据 -- 标题 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 文件夹仍在“供应商”文件夹中。 由于他们都使用名称“搜索”作为插件名称,Cake 一定有点困惑。 一旦我更新了 Composer,它就删除了 CakeDC 插件,并且上面的设置与 FriendsOfCake 插件一起工作得很好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM