我正在尝试阅读 P. Lobacher 的“TYPO3 Extbase - 现代扩展开发”一书。我在搜索字段中很重要。在这里,我的编辑器(PHPStorm)告诉我 $search 没有定义。
我有一个 listAction :
/**
* @internal param string $search
*/
public function listAction() {
if ($this->request->hasArgument('search')){
$search = $this->request->getArgument('search');
}
$limit = ($this->settings['blog']['max']) ?: NULL;
$this->view->assign('blogs', $this->blogRepository->findSearchForm($search,$limit));
$this->view->assign('search', $search);
}
在我的存储库中,我尝试设置这样的查询:
/**
* @param string $search
* @param int $limit
* @return array|\TYPO3\CMS\Extbase\Persistence\QueryResultInterface
*/
public function findSearchForm($search,$limit) {
$query = $this->createQuery();
$query->matching(
$query->like('title','%'.$search.'%')
);
$query->setOrderings(array('title' => \TYPO3\CMS\Extbase\Persistence\QueryInterface::ORDER_ASCENDING));
$limit = (int)$limit; if ($limit > 0) {
$query->setLimit($limit);
}
return $query->execute();
}
在我的列表视图中,我有这样的搜索表单:
<f:form action="list" additionalAttributes="{role:'form'}"> <div class="form-inline">
<div class="form-group">
<f:form.textfield name="search" value="{search}" class="form-control" /> <f:form.submit value="Search!" class="btn-xs btn-primary" />
</div> </div>
</f:form>
如果我将分配给我的 listAction 中的视图更改为:
$this->view->assign('blogs', $this->blogRepository->findSearchForm('Testblog',$limit));
然后他向我展示了标题片段为“Testblog”的博客。但动态它不会工作。
我正在使用 TYPO3 v8.5.1
谢谢你的帮助。