2016-10-25 3 views
8

Как в laravel 4.2, так и в laravel 5.3 существует возможность использовать неявный контроллер. Синтаксис одинаковый для обеих версий.Как передать параметр в неявный контроллер в Laravel 5?

Route::controller('myroute', 'myDearController'); 

Так что URL будет:

http://my.domain.com/myroute/function-name/parameter1/parameter2 

В Laravel 4, контроллер будет выглядеть следующим образом:

//..... Some other controller related syntax ...... 
public function getFunctionName($parameter1, $parameter2) { 
    $inputs = Input::all(); 
    dd($inputs); 
} 
//..... Some other controller related syntax ...... 

Однако в Laravel 5, чтобы получить вход GET, его занимает место с параметрами, поэтому я попытался сделать что-то вроде этого:

//..... Some other controller related syntax ...... 
public function getFunctionName(Request $request, $parameter1, $parameter2) { 
    $inputs = $request->all(); 
    dd($inputs); 
} 
//..... Some other controller related syntax ...... 

Однако URL-адрес возвращает The site can't be reached. Я попытался переключить положение,

//..... Some other controller related syntax ...... 
public function getFunctionName($parameter1, $parameter2, Request $request) { 
    $inputs = $request->all(); 
    dd($inputs); 
} 
//..... Some other controller related syntax ...... 

Это не работает. Я знаю, что могу добавить строку Route::get('myroute/function-name/{$parameter1}/{$parameter2}', '[email protected]') в файл маршрута, но, кроме того, явно указать в файле маршрута, есть ли способ по умолчанию?

ответ

0

Вы не можете использовать ::controller, так что вам нужно будет создать явные маршруты для приложений Laravel 5, и по умолчанию нет способа сделать то, что ::controller сделал в 4.2. Вы можете посмотреть Resource controllers, которые позволяют использовать некоторые неявные маршруты для CRUD.

Маршрутизация ресурсов Laravel присваивает типичные маршруты «CRUD» контроллеру с одной строкой кода.

+0

Как эта строка указывает, что контроллер Route :: больше не работает? На самом деле, я использую Route :: controller, и он отлично работает, за исключением части параметра передачи. – cytsunny

+0

В 5.3 это даст вам ошибку «Контроллер метода не существует». –

1

С явным путем он должен быть {parameter} вместо {$parameter}. так,

Route::get('myroute/function-name/{parameter1}/{parameter2}', '[email protected]') 
+0

Кажется, вы мастер laravel. Мне нужна твоя помощь. Смотрите здесь: http://stackoverflow.com/questions/41047583/how-to-add-dynamic-dropdown-list-column-on-laravel-5-3-регистрация –

0
Route::resource('myroute', 'myDearController'); 

Если вы затем сделать PHP мастеровые маршрута: список вы увидите список всех маршрутов.

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