如何在 Laravel 5.2 中使用资源声明路由
Posted
技术标签:
【中文标题】如何在 Laravel 5.2 中使用资源声明路由【英文标题】:How to declare routes with resources in Laravel 5.2 【发布时间】:2016-10-21 14:11:41 【问题描述】:我在 laravel 的 routes.php 中有一些路由
// Code for rounting admin panel
Route::resource('/admin','Admin\LoginController@index');
Route::resource('/admin/dashboard','Admin\AdminController@index');
Route::resource('/admin/movies','Admin\MovieController@index');
现在,当我访问 url http://localhost/askspidy/admin 时,我想显示登录页面并且它可以工作,但是当我访问 url http://localhost/askspidy/admin/dashboard 时,它应该转到仪表板,但它只显示登录页面。 我知道这是因为当它在任何 url 中找到 /admin 时,默认情况下会转到路由
Route::resource('/admin','Admin\LoginController@index');
我知道它假设 (/admin) 是到控制器的路由, (/dashboard) 是控制器中声明的函数,但我只想要这样的路由,所以对于这个问题还有其他解决方案吗。
【问题讨论】:
尝试在路由中使用命名空间和前缀,以防止重复。 【参考方案1】:RESTful Resource Controller 负责每个操作。您只需要列出名称和控制器:
Route::resource('photo', 'PhotoController');
如果您只想使用index
方法,您可以这样列出:
Route::resource('photo', 'PhotoController', ['only' => [
'index'
]]);
但是,您的两条路线似乎不适合资源(登录和仪表板),因为它们应该与编辑模型有关。
您应该改用 get()
资源。
From the docs:
Route::get('user/id', 'UserController@showProfile');
所以在你的情况下,它会是:
Route::get('/admin','Admin\LoginController@index');
Route::get('/admin/dashboard','Admin\AdminController@index');
Route::resource('/admin/movie','Admin\MovieController');
【讨论】:
谢谢这对我有用,是的,登录和仪表板不需要资源。以上是关于如何在 Laravel 5.2 中使用资源声明路由的主要内容,如果未能解决你的问题,请参考以下文章
如何使用where关键字检查Laravel 5.2路由中的状态参数?