如何在Laravel中调用正确的控制器功能?

时间:2015-06-08 02:24:56

标签: php laravel laravel-5

我有一个按钮,当我点击该按钮时,我将user/create。我无法尝试调试我的show()函数执行的原因而不是我的创建函数。

enter image description here

路线

// Auth Group 
$router->group(['middleware' => 'auth'], function() {

    //Users
    Route::get('user/{id}', array('before' =>'profile', 'uses'=>'UserController@show'));

});
// Auth and Admin Group 
$router->group(['middleware' => ['auth', 'admin']], function() {

    Route::get('user/create', array('as'=>'user.create', 'uses'=>'UserController@create'));

});

显然,我设置user/create来调用创建函数。

UserController的

显示 - 我不知道为什么要执行此功能。

public function show($id)
{
    dd("I'm inside the show function ");

    $user = User::findOrFail($id);
    return View::make('users.show')
        ->with('user', $user);
}

创建 - 假设要调用此函数

// Bring up create form for Aveniros user
public function create(){
    return View::make('users.create');
}

有人知道为什么吗?

2 个答案:

答案 0 :(得分:3)

请注意,/user/create与路线Route::get('user/{id}', array());匹配 您可以向用户id添加costraint,以便只匹配整数:

Route::get('user/{id}', array(
    'before' =>'profile', 
    'uses'=>'UserController@show'
))->where('id', '[0-9]+');

您也可以互换路线的顺序,以便Route::get('/user/create')首先匹配。

答案 1 :(得分:0)

有趣的事情......这实际上是Laravel 5上Laracasts所涵盖的具体示例。是的,在通配符({id})之前放置非通配符任务(/ create)的路由({id})处理一切,它永远不会进入/创建。