【问题标题】:FE Searchfield in simpleblog extension doesn't worksimpleblog 扩展中的 FE Searchfield 不起作用
【发布时间】:2017-02-06 08:25:40
【问题描述】:

我正在尝试阅读 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

感谢您的帮助。

【问题讨论】:

    标签: typo3 extbase typo3-8.x


    【解决方案1】:

    首先您应该更改 $limit 行,因为它难以阅读。将其更改为:

    $limit = $this->settings['blog']['max'] ? $this->settings['blog']['max'] : 0;
    

    我将 NULL 更改为 0,因为在存储库注释中,参数应该是整数。

    那么你还应该将两个assign() 函数更改为assignMultiple()-Array。

    你有没有在你的控制器中调试过 $search

    \TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump($search);
    

    因为你没有绑定到一个对象,你可能无法使用 getArgument() 获取 $search。您能否给我们该表单字段的渲染 HTML 输出?

    编辑:由于您的搜索,您可能不会缓存列表操作。将 ext_localconf.php 中的列表操作更改为 NOT CACHED。

    【讨论】:

    • 嗨,保罗,谢谢您的回答。我已将 NULL 更改为 0,然后我调试了 $search,结果是:'0'(1 个字符)使用 assignMultiple()-Array 你的意思是:$this->view->assign(array(( '博客', $this->blogRepository->findSearchForm($search,$limit)),('search', $search))) ?或者你是什么意思?呈现的 HTML 是: 编辑:我已经输入“NOT CACHED”谢谢你的帮助。
    猜你喜欢
    • 1970-01-01
    • 2014-11-30
    • 2014-02-20
    • 2019-03-21
    • 2011-08-18
    • 2012-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多