Laravel命名为集团路线

时间:2013-05-01 21:25:52

标签: php laravel

是否可以命名一组路线?

类似的东西:

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。

2 个答案:

答案 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,那你就知道其余的了。