如何在 Laravel 中调用正确的控制器函数?
How do I call the right controller function in Laravel?
我有一个按钮,当我点击那个按钮时,我就会user/create
。我无能为力地试图调试为什么我的 show()
函数正在执行而不是我的创建函数。
路线
// 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
调用create函数。
用户控制器
Show - 我不知道为什么要执行这个函数。
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');
}
有人知道为什么吗?
注意 /user/create
匹配路线 Route::get('user/{id}', array());
您可以向用户 id
添加一个约束,以便只匹配整数:
Route::get('user/{id}', array(
'before' =>'profile',
'uses'=>'UserController@show'
))->where('id', '[0-9]+');
您也可以调换路线的顺序,这样 Route::get('/user/create')
将首先匹配。
有趣的是..这实际上是 Laravel 5 上的 Laracasts 中涵盖的一个具体示例。是的,将非通配符任务 (/create) 的路由放在通配符 ({id}) 之前,否则 ({id}) 会处理所有事情,它永远不会到达 /create。
我有一个按钮,当我点击那个按钮时,我就会user/create
。我无能为力地试图调试为什么我的 show()
函数正在执行而不是我的创建函数。
路线
// 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
调用create函数。
用户控制器
Show - 我不知道为什么要执行这个函数。
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');
}
有人知道为什么吗?
注意 /user/create
匹配路线 Route::get('user/{id}', array());
您可以向用户 id
添加一个约束,以便只匹配整数:
Route::get('user/{id}', array(
'before' =>'profile',
'uses'=>'UserController@show'
))->where('id', '[0-9]+');
您也可以调换路线的顺序,这样 Route::get('/user/create')
将首先匹配。
有趣的是..这实际上是 Laravel 5 上的 Laracasts 中涵盖的一个具体示例。是的,将非通配符任务 (/create) 的路由放在通配符 ({id}) 之前,否则 ({id}) 会处理所有事情,它永远不会到达 /create。