我正在尝试在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()?>
答案 0 :(得分:1)
好吧,我的坏!我现在知道问题是什么......这不是代码。如果有人遇到类似的问题:
我之前已经设置了CakeDC搜索插件,并已将其从composer.json中的必需列表中删除,但忘记更新作曲家,以便他实际删除了它。
我现在注意到CakeDC文件夹仍在“vendor”文件夹中。由于他们都使用名称“搜索”作为插件名称,因此Cake必须有点混淆。一旦我更新了作曲家,它就删除了CakeDC插件,上面的设置与FriendsOfCake插件一起工作得很好。