皆さん。私はちょっとルートに行き詰まっています
トップナビゲーションに検索フォームがあります。
<form action="/search/" class="navbar-search pull-right">
<input type="text" name="q" id="search-query" class="search-query span3" placeholder="Go for it...">
</form>
したがって、リクエストを行うと、URLは次のようになります
fuelphp.dev/search/?q=qwerty
これは問題ありません。その URL を使用すると、ユーザーは、action_index()
ただし、ユーザーがfuelphp.dev/search/
(パラメーターなしで) にアクセスすると、によって提供される「高度な検索フォーム」が表示されます。action_advanced()
Controller_Search はすでに作成しました
classes/controller/search.php (コントローラー)
class Controller_Search extends Controller_Hybrid
{
public function action_index() {
$this->template->title = 'Results for » '.Input::get('q');
$this->template->content = View::forge('search/index.twig');
}
public function action_advanced()
{
$this->template->title = 'Search » Advanced Search';
$this->template->content = View::forge('search/index.twig', array(
'advancedForm' => true
));
}
}
views/search/index.twig (ビュー)
{% if advancedForm %}
{% include 'advancedSearchForm.twig' %}
{% endif %}
<h4>Hello Template nesting :) </h4>
問題は、そのためのルートを (再) 書き込む方法がわからないことです。
'search' => 'search/advanced'
routes.phpに追加すると、正しく機能しません。
Requestinもfuelphp.dev/search/?q=qwerty
トリガーaction_advanced()
しますがController_Search
、トリガーする必要がありますaction_index()
これを機能させるには、ルート(またはコントローラーロジック)をどのように書き直す必要がありますか?
アップデート:
解決策が見つかりました!ルート構成は必要ありません!
public function action_index() {
if (Input::get('q')) {
$viewTitle = 'Results for » '.Input::get('q');
$viewData = null;
}else{
$viewTitle = 'Search » Advanced Search';
$viewData = Array('advancedForm' => true);
}
$this->template->title = $viewTitle;
$this->template->content = View::forge('search/index.twig', $viewData);
}
しかし、あなたの一人が「より良い」方法を持っているなら、私はそれを見てうれしいです.