是否可以命名一组路线?
类似的东西:
Route::group(array('as'=>'fruits'), function(){
Route::get('apple', array('as'=>'apple','uses'=>'fruits@apple'));
Route::post('apple', array('uses'=>'fruits@editapple'));
Route::get('pear', array('as'=>'pear', 'uses'=>'fruits@pear'));
});
然后通过执行以下操作检查URL是否为“水果”:
if (Request::route()->is('fruits')){
// One of the "fruits" routes is active
}
或者我必须:
Route::get('fruits/apple', array('as'=>'apple','uses'=>'fruits@apple'));
Route::post('fruits/apple', array('uses'=>'fruits@editapple'));
Route::get('fruits/pear', array('as'=>'pear', 'uses'=>'fruits@pear'));
然后检查:
if(URI::is('fruits/*')){
//"fruits" active
}
这是一个navmenu。
答案 0 :(得分:2)
无法查看您使用的是Laravel 3还是Laravel 4.使用Laravel 4,您可以使用Route Prefixing
Route::group(array('prefix' => 'fruits'), function()
{
Route::get('apple', array('as'=>'apple','uses'=>'fruits@apple'));
Route::post('apple', array('uses'=>'fruits@editapple'));
Route::get('pear', array('as'=>'pear', 'uses'=>'fruits@pear'));
});
您可以使用此
进行检查if(Request::is('fruits/*')) {
// One of the "fruits" routes is active
}
当你使用Laravel 3时,我认为你必须创建一个名为fruits的包,这样你就有了url前缀。
然后你可以通过这种方式检查活动路线
if(URI::is('fruits/*')){
//"fruits" active
}
答案 1 :(得分:0)
你不能用你的第一个例子来命名一个小组,但我认为你可以用不同的方式做到这一点(分享我的想法,不知道对错),仅在version 3
中进行测试
<强> routes.php文件强>
Route::any('/fruits/(:any)', function($fruite){
// Pass a parameter to the method, for example (demo purpose only)
$param_for_method = $fruite == 'apple' ? 'Green' : 'Yellow';
// Call the controller method, $fruite will represent (:any)
Controller::call("fruits@$fruite", array($param_for_method));
});
您的控制器:
class Fruits_Controller extends Base_Controller
{
public function action_apple($args)
{
//
}
public function action_banana($args)
{
//
}
// you can create as many fruit's method as you want
}
现在,如果我们写http://yourdomain.dev/fruits/apple
,那么它将从apple
控制器调用fruits
方法,参数将为Green
,可使用{{1}访问如果我们写$args
,那你就知道其余的了。