Laravel路由到错误的视图

时间:2015-01-06 02:34:21

标签: php laravel laravel-routing

我正在使用Laravel 4.2。我有一个应用程序路由到错误的视图,虽然URL是正确的。点击按钮后,它应该路由到users.createUsersController@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的第一条路线,但我仍然不明白为什么没有通过用户对象的路线会选择定义为users/{user}的路线。此外,我通过link_to_route()访问路线,也就是说,通过名称访问路线。为什么Laravel选择了与我明确命名的路线不同的路线?

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

2 个答案:

答案 0 :(得分:2)

对我而言,第一件事就是没有#34;创建"的路线。有一个" restful"控制器,但也许你只想尝试将路线放入。我在服务html时使用宁静的路线有点不舒服。在我正在努力保留那些数据/ json传输的项目中,为了支持外部api操作。

答案 1 :(得分:1)

我认为您的路线设置会在create中将{user}识别为user/{user},因此会重定向到user/show/create作为“显示用户的自定义路线”设置。

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