2017-02-06 19 views
0

私はP. Lobacherの "TYPO3 Extbase - Modern Extension Development"という本を読もうとしています。そこでは、私はsearchfieldの要点です。ここで私の編集者(PHPStorm)は、$検索が定義されていないことを私に伝えます。私のリストビューでシンプル・ブログ拡張機能のFE Searchfieldは機能しません

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

私はそのようなsearchform持っている:私はセットアップにそのようなクエリを試してみてください、私のリポジトリに

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

私はと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> 

私のlistActionのビューへの割り当てを変更した場合:

$this->view->assign('blogs', $this->blogRepository->findSearchForm('Testblog',$limit)); 

次に、彼は私に、その中に「Testblog」というタイトルの断片を持つブログを表示します。しかし、動的には動作しません。

私はあなたの助けのためのTYPO3のV8.5.1に

Thxをを使用しています。

答えて

1

最初は、読みにくいため$ limit行を変更する必要があります。

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

リポジトリアノテーションでパラメータが整数である必要があるため、NULLを0に変更しました。

次に、2つのassign()関数をassignMultiple() - Arrayに変更する必要があります。あなたは今まで

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

を使用して、コントローラで$検索を

をデバッグがあなたがオブジェクトにバインドされていないので、あなたは)getArgument(と$の検索を取得することができない場合があります。フォームフィールドのレンダリングされたHTML出力を教えてください。

編集:検索のために、リストアクションをキャッシュできない可能性があります。 ext_localconf.phpのリストアクションをNOT CACHEDに変更してください。

+0

こんにちはポール、あなたの答えのためのthx。私はNULLを0に変更しました。次に$ searchをデバッグしました。結果は '0'(1文字) assignMultiple() - Arrayとは、$ this-> view-> assign(array ( 'blogs'、$ this-> blogRepository-> findSearchForm($ search、$ limit))、( 'search'、$ search)))?それともあなたは何を意味しましたか? レンダリングされたHTMLは次のとおりです。<入力クラス=「フォーム・コントロール」タイプ=「テキスト」名前=「tx_cfsimpleblog_bloglisting [検索]」> 編集:私はすでにのため THXを「キャッシュされていない」ことで入れているあなた助けて。 – codeFragment

関連する問題