简体   繁体   中英

Laravel Named Group Routes

Is it possible to name a Group of Routes?

Something like:

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'));
});

Then check if the URL is "fruits" by doing:

if (Request::route()->is('fruits')){
   // One of the "fruits" routes is active
}

Or do I have to:

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'));

Then check by:

if(URI::is('fruits/*')){
   //"fruits" active
}

It's for a navmenu.

Can't see if you are using Laravel 3 or Laravel 4. With Laravel 4 you can use 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'));
});

You can check it by using this

if(Request::is('fruits/*')) {
    // One of the "fruits" routes is active
}

When you are using Laravel 3, I think you have to create an bundle named fruits so you have the url prefix.

Then you can check the active route by this way

if(URI::is('fruits/*')){
   //"fruits" active
}

You can't name a group using your first example but I think you can do it but in a different way (sharing my idea, don't know right or wrong) , tested only in 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));
});

Your Controller :

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
}

Now, if we write http://yourdomain.dev/fruits/apple then it'll call the apple method from our fruits controller and the parameter will be Green that is accessible using $args and if we write http://yourdomain.dev/fruits/banana then you know the rest.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM