Laravel 路由到错误的视图

Laravel Routing to Wrong View

我正在与 Laravel 4.2 合作。我有一个路由到错误视图的应用程序,尽管 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 routes 的相关结果:

GET:HEAD    users/{user}    users.show      UsersController@show
GET:HEAD    users/create    users.create    UsersController@create

感谢您的帮助!

编辑: 问题的答案是简单地重新排序路由,以便首先定义资源。我知道 Laravel 会获取与 URI 匹配的第一条路由,但我仍然不明白为什么未通过用户对象的路由会 select 定义为 [=19= 的路由].此外,我通过 link_to_route() 访问路由,也就是说,通过名称。为什么 Laravel 选择与我明确命名的路线不同的路线?

我想这些问题超出了最初问题的范围,但我非常感谢有人进一步解释。问题已解决!

我认为您的路由设置将 create 识别为 user/{user} 中的 {user},因此重定向到 user/show/create 作为您的 "custom route for showing a user" 设置。

您可能必须避免在 users/ 路由之后立即获取字符串变量。

首先让我震惊的是 "create" 没有路线。有 "restful" 控制器,但也许你只想尝试将路由放入。我在服务 html 时使用 restful 路由有点不舒服。在我正在进行的项目中,我一直在尝试保留那些用于 data/json 传输,以支持外部 api 操作。