2013-12-16 2 views
1

Я пытаюсь понять маршрутизацию в Laravel 4. Я прочитал хороший post here on StackOverflow и ссылку на beware the route to evil, сообщение о том, что нужно указывать маршруты вручную. Мне нравится идея указать мои маршруты вручную и иметь route.php как документацию. Но, похоже, мне нужно быть осторожным в отношении порядка моих маршрутов, если я собираюсь указать свой собственный, вместо того, чтобы использовать Route::resource(). Если у меня есть маршрут new или create до show, то я не буду перенаправлен на шоу, потому что переменной в URI? Важным правилом является порядок, в котором определены маршруты.Требуемый заказ для указания постоянных маршрутов в Laravel 4?

// This will not work if I try and browse to dogs/new 
Route::get('dogs', array('as' => 'dogs', 'uses' => '[email protected]')); 
Route::get('dogs/{dogs}', array('as' => 'dog', 'uses' => '[email protected]')); 
Route::get('dogs/new', array('as' => 'new_dog', 'uses' => '[email protected]')); 

Кажется, мне нужно, чтобы убедиться, что dogs/new идет перед dogs/{dogs} для нового правильно вернуться. Я не понимаю, что делает {dogs} или не отличается от (:any) или {any} Я видел несколько разных применений в примерах и псевдокоде. Я вижу, что /new - это то же самое, что и {...}, когда маршрут еще до того, как более конкретным является {}, как шаблон в Laravel 4? Является ли (: ...) старым способом?

В качестве исключения я заметил другое соглашение об именах из некоторых примеров, которые я видел при запуске php artisan routes с маршрутом ресурса, например Route::resource('photos', 'PhotosController');. Метод и названный маршрут для сообщения для индексации для создания нового ресурса named photos.store и @store. Метод и названный маршрут для ссылки на форму для создания нового ресурса - photos.create и @create. Это ли Laravel 4 вещь или соглашения в других рамках?

ответ

0
Route::get('dogs/{dogs}', array('as' => 'dog', 'uses' => '[email protected]')); 

Указанный выше URL-адрес, ожидающий параметр после сегмента собак. , например: http://laravel.com/dogs/xyz, http://laravel.com/dogs/new

после сегмента URL-адреса собак, Laravel примет все. Таким образом, ваша другая маршрутизация никогда не будет выполняться для параметра маршрута.

Route::get('dogs/new', array('as' => 'new_dog', 'uses' => '[email protected]')); 

Подробнее о параметрах маршрута:

http://laravel.com/docs/routing#route-parameters

Контроллеры ресурсов Laravel и Ruby on rails ресурсная поддержка полной маршрутизации. Я думаю, Tailor заимствует идею полной маршрутизации ресурса от Ruby on rails.

следующие маршруты сгенерирует если вы используете контроллер ресурса:

index 
create 
store 
update 
show 
edit 
destroy 

http://guides.rubyonrails.org/routing.html

http://laravel.com/docs/controllers#resource-controllers

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