1

是否可以命名一组路线?

就像是:

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 是否为“fruits”:

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
}

这是一个导航菜单。

4

2 回答 2

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
}
于 2013-05-02T09:45:10.527 回答
0

你不能用你的第一个例子来命名一个组,但我认为你可以用不同的方式来做(分享我的想法,不知道对错),仅在version 3

路由.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可以访问的$args,如果我们写http://yourdomain.dev/fruits/banana,那么你就知道其余的了。

于 2013-05-02T01:19:36.990 回答