URIから収集したデータに基づいてコントローラーを選択できるようにしたいと思います。
カテゴリテーブルとサブカテゴリテーブルがあります。基本的に私は次の形式のURLを持っています(:any)/(:any)
。最初のワイルドカードは都市のナメクジ(つまり、エディンバラ)で、2番目のワイルドカードはカテゴリまたはサブカテゴリのナメクジになります。
そのため、私のルートでは、そのルートのカテゴリを検索します。見つかった場合は、コントローラー:forsaleとメソッド:get_categoryを使用します。カテゴリでない場合はサブカテゴリを検索し、そこで見つかった場合はコントローラー:forsaleとメソッド:get_subcategoryを使用します。サブカテゴリでない場合は、他のルートを探し続けたいと思います。
Route::get('(:any)/(:any)', array('as'=>'city_category', function($city_slug, $category_slug){
// is it a category?
$category = Category::where_slug($category_slug)->first();
if($category) {
// redirect to controller/method
}
// is it a subcategory?
$subcategory = Subcategory::where_slug($category_slug)->first();
if($subcategory) {
// redirect to controller/method
}
// continue looking for other routes
}));
まず、実際にリダイレクトせずにここでコントローラー/メソッドを呼び出す方法がわかりません(したがって、URLを再度変更します)。
そして第二に、これはこれを行うための最良の方法でさえありますか?を使い始めまし/city_slug/category_slug/subcategory_slug
た。しかし、私は見せたいだけですcity_slug/category|subcategory_slug
が、2番目のナメクジがどれであるかを知る方法が必要です。
最後に、(:any)/(:any)の後に続く他のURLが使用されている可能性があるため、他のルートも探し続けることができるようにする必要があります。