クリーン URL を使用して検索モジュールを実装しようとしています。www.website.com/search/ searchtermのようなもの。EWZSearchBundle を使用して検索可能なインデックスを作成したので、関連するデータベースがないため、エンティティは必要ありません。
public function searchAction(Request $request)
{
$form = $this->createFormBuilder()
->add('query', 'text')
->getForm();
if('POST' === $request->getMethod()){
$form->bind($request);
if ($form->isValid()) {
return $this->redirect($this->generateUrl('search_process', array('query' => $request->query->get('query'))));
}
}
return array(
'form' => $form->createView(),
);
}
エンティティのない単純なフォームを作成し、フォーム アクションをそれ自体に送信しました。POST リクエストの場合は、フォームを検証し、クリーンな URL (www.website.com/search/ searchterm ) を使用して検索プロセスに送信します。
public function searchProcessAction($query)
{
$search = $this->get('ewz_search.lucene');
$results = $search->find($query);
return array(
'results' => $results,
);
}
検索プロセスでは、クリーンな URL から検索用語を取得し、インデックスで検索して結果を返します。それは非常に単純なプロセスのはずです。問題は 1 つだけです。
Entity を使用する必要がないため、POST リクエストになることも、 の中に入ることもありませんif('POST' === $request->getMethod())
。また、GET リクエストになることで、URL をきれいに保つという私のすべてが台無しになります。
私は自分のやり方と余分なリダイレクトを行うことを知っていますが、検索用にきれいな URL を維持する方法が他にわかりません。プロセス全体に関する提案を受け付けています。