我正在使用 Laravel 4.2。我有一个应用程序路由到错误的 View ,尽管 URL 是正确的。单击按钮时,它应该路由到 users.create
(UsersController@create
),但实际上路由到 UsersController@show
。不过,解析的 URL 是正确的,并且 DOM 元素列出了正确的 URL。谁能帮帮我吗?
这是我的路线文件:
// Home page
Route::get('/', 'BaseController@index');
// Define User model to pass through routes
Route::model('user', 'User');
// Create custom route for editing a user
Route::get('users/edit/{user}',
array('as' => 'users.edit', 'uses' => 'UsersController@edit'));
// Create custom route for showing a user
Route::get('users/{user}',
['as' => 'users.show', 'uses' => 'UsersController@show']);
// Remaining routes
Route::resource('users', 'UsersController',
array('except' => array('edit', 'show')));
这是我的 UsersController
,其中包含有问题的两个函数:
class UsersController extends \BaseController {
protected $user;
public function create()
{
return View::make('users/create');
}
public function show($user)
{
return View::make('users/show', ['user' => $user]);
}}
以下是来自 php artisan paths
的相关结果:
GET:HEAD users/{user} users.show UsersController@show
GET:HEAD users/create users.create UsersController@create
感谢您的帮助!
编辑:
问题的答案是简单地重新排序路由,以便首先定义资源。我知道 Laravel 会获取与 URI 匹配的第一个路由,但我仍然不明白为什么未传递用户对象的路由会选择定义为 users/{user}
的路由。此外,我通过 link_to_route()
访问路线,也就是说,通过名称访问路线。为什么 Laravel 会选择与我明确指定的路线不同的路线?
我想这些问题超出了最初问题的范围,但我非常感谢有人提供进一步的解释。问题解决了!
最佳答案
我首先想到的是没有“创建”的路线。有“restful” Controller ,但也许您只想尝试将路由放入。在提供 html 时使用 Restful 路由我有点不舒服。在我正在从事的项目中,我一直在尝试保留这些数据/json 传输,以支持外部 api 操作。
关于php - Laravel 路由到错误的 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27791246/