在extbase

时间:2015-08-31 15:00:06

标签: typo3 extbase

我尝试将一个简单的搜索表单添加到我的extbase扩展中,这不会像假设的那样工作。我想将输入(关键字)作为参数传递给我的searchAction。

//添加到 list.html

<f:form action="search" arguments="{keyword}">
  <f:form.textfield name="keyword" value="Suchbegriff">
  <f:form.submit value="Suchen" />
</f:form>

//添加到 ItemController.php

/**
 * action search
 *
 * @param \string $keyword
 * @return void
 */
public function searchAction($keyword='') {

    $items = $this->itemRepository->findKeyword($keyword);
    $this->view->assign('items', $items);
}

如何将输入从文本域keyword传递到我的ItemControllers searchAction() ???

3 个答案:

答案 0 :(得分:0)

您可以通过在控制器Action中使用以下方法从视图中获取所有参数。

$this->request->getArguments();

通过使用此方法,您可以检查是否传递了参数。 你也可以像这样检查:

if($this->request->hasArgument('Search')) { }

如果您的字段是关键字,那么您可以这样找到:

if($this->request->hasArgument('Search')) { 
    $items = $this->itemRepository->findKeyword($this->request->getArgument('Search'));
}
$this->view->assign('searchItems', $items);

答案 1 :(得分:0)

我想知道你没有得到例外。参数是数组的类型。 你的表格必须看起来像这样。

<f:form action="search" arguments="{keyword:keyword}">
  <f:form.textfield name="keyword" value="Suchbegriff">
  <f:form.submit value="Suchen" />
</f:form>

答案 2 :(得分:0)

你的html表单中的

应该像这样

extern template
控制器中的

应该是这样的

<f:form action="search" name="query">
  <f:form.textfield property="keyword" value="">
  <f:form.submit value="Suchen" />
</f:form>
您的存储库中的

应该是这样的

/**
 * action search
 *
 * @param \string $keyword
 * @return void
 */
public function searchAction($keyword='') {

    if ($this->request->hasArgument('query')) {
        $search = $this->request->getArgument('query');
        $items = $this->itemRepository->findKeyword($keyword);
    }
    $this->view->assign('items', $items);
}

希望它会有所帮助!