simpleblog扩展中的FE Searchfield不起作用

时间:2017-02-06 08:25:40

标签: typo3 extbase typo3-8.x

我正在尝试阅读P. Lobacher的“TYPO3 Extbase - Modern Extension Development”一书。在那里我与搜索域有关。在这里,我的编辑(PHPStorm)告诉我$ search未定义。

我有一个listAction:

<div class="form-group">
                    <div class='input-group date' id='datetimepicker1'>
                        <input type='text' class="form-control" />
                        <span class="input-group-addon">
                            <span class="glyphicon glyphicon-calendar"></span>
                        </span>
                    </div>
                </div>

@using (Script.Foot())
{

    <script type="text/javascript">

        //<![CDATA[

        $(function () {


            $('#datetimepicker1').datetimepicker();

        });



        //]]>
    </script>
}

在我的存储库中,我尝试设置类似的查询:

/**
 * @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();
}

如果我将listAction中的视图分配更改为:

<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>

然后他向我展示了标题片“Testblog”中的博客。但动态地它将不起作用。

我正在使用TYPO3 v8.5.1

感谢您的帮助。

1 个答案:

答案 0 :(得分: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。