【发布时间】:2014-01-03 08:52:01
【问题描述】:
我正在尝试理解 Laravel 4 中的路由。我阅读了一篇很好的 post here on StackOverflow 和指向 beware the route to evil 的链接,这是一篇关于手动指定路由的帖子。我喜欢手动指定我的路由并将 routes.php 作为文档的想法。但是,如果我要指定自己的路线而不是使用Route::resource(),我似乎需要谨慎对待路线的顺序如果我在show 之前有new 或create 路线,那么我赢了'不会因为 URI 中的变量而被路由到节目?定义路线的顺序很重要,对吧?
// This will not work if I try and browse to dogs/new
Route::get('dogs', array('as' => 'dogs', 'uses' => 'DogsController@index'));
Route::get('dogs/{dogs}', array('as' => 'dog', 'uses' => 'DogsController@show'));
Route::get('dogs/new', array('as' => 'new_dog', 'uses' => 'DogsController@create'));
看来我需要确保 dogs/new 出现在 dogs/{dogs} 之前,以便 new 正确返回。我不清楚{dogs} 的作用或与(:any) 或{any} 的不同之处我在示例和伪代码中看到了一些不同的用途。我看到 /new 与 {...} 相同,当路由在更具体的 {} 之前就像 Laravel 4 中的通配符? (:...) 是旧方式吗?
顺便说一句,当我使用Route::resource('photos', 'PhotosController'); 之类的资源路由运行php artisan routes 时,我注意到与一些示例不同的命名约定。新资源名为 photos.store 和 @store。用于创建新资源的表单链接的方法和命名路径是 photos.create 和 @create。那是 Laravel 4 的东西还是其他框架中的约定?
【问题讨论】:
标签: php rest laravel-4 routing laravel-routing