2015-06-08 3 views
1

У меня есть кнопка, и когда я нажимаю на эту кнопку, это будет меня до user/create. Я не знаю, как отлаживать, почему моя функция show() выполняет, а не мою функцию create.Как я могу назвать функцию правильного контроллера в Laravel?

enter image description here

Маршрут

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

    //Users 
    Route::get('user/{id}', array('before' =>'profile', 'uses'=>'[email protected]')); 

}); 

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

    Route::get('user/create', array('as'=>'user.create', 'uses'=>'[email protected]')); 

}); 

Очевидно, что я поставил 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'); 
} 

Кто-нибудь знает, почему?

ответ

3

Обратите внимание, что /user/create соответствует маршруту Route::get('user/{id}', array());
Вы можете добавить costraint пользователю id так, что только целые числа будут сопоставляться:

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

Также вы можете поменять порядок ваших маршрутов, так что Route::get('/user/create') будет соответствует FIRST.

0

Смешная вещь .. это на самом деле конкретный пример, рассмотренный в Laracasts on Laravel 5. Да, поместите маршрут для задачи без подстановки (/ create) перед шаблоном ({id}) в противном случае ({id}) обрабатывает все и никогда не получает/создает.

Смежные вопросы