2013-05-01 3 views
1

Можно ли назвать группу маршрутов?Laravel Named Group Маршруты

Что-то вроде:

Route::group(array('as'=>'fruits'), function(){ 
    Route::get('apple', array('as'=>'apple','uses'=>'[email protected]')); 
    Route::post('apple', array('uses'=>'[email protected]')); 
    Route::get('pear', array('as'=>'pear', 'uses'=>'[email protected]')); 
}); 

Затем проверьте, если URL является "плоды", выполнив:

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

Или я должен:

Route::get('fruits/apple', array('as'=>'apple','uses'=>'[email protected]')); 
Route::post('fruits/apple', array('uses'=>'[email protected]')); 
Route::get('fruits/pear', array('as'=>'pear', 'uses'=>'[email protected]')); 

Затем проверьте по:

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

Это для navmenu.

ответ

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("[email protected]$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, тогда вы знаете все остальное.

2

Не можете ли вы используете Laravel 3 или Laravel 4. С Laravel 4 вы можете использовать Route Prefixing

Route::group(array('prefix' => 'fruits'), function() 
{ 
    Route::get('apple', array('as'=>'apple','uses'=>'[email protected]')); 
    Route::post('apple', array('uses'=>'[email protected]')); 
    Route::get('pear', array('as'=>'pear', 'uses'=>'[email protected]')); 
}); 

Вы можете проверить это с помощью этого

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

Когда вы используют Laravel 3, я думаю, вам нужно создать пакет с именами фруктов, поэтому у вас есть префикс url.

Затем вы можете проверить активный маршрут, таким образом

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

Спасибо за ответ. Я все еще новичок в laravel, поэтому посмотрим, как сделать связку. – GlomB

+0

Оформить заказ документов на http://laravel.com/docs/bundles#creating-bundles. Если вы просто устарели от своего приложения, лучше переключиться на Laravel 4. Теперь это бета-версия, но они выпущены в этом месяце. – JackPoint

+0

Ах да, контроллеры ресурсов - это то, что я искал. Следующая проблема будет заключаться в том, чтобы переключиться на Laravel 4 :) – GlomB

Смежные вопросы