2016-01-18 4 views
2

В моем файле маршрутов у меня есть;Передача параметра контроллеру с маршрута

Route::get('/{token}/student', [ 
    'uses' => '[email protected]', 
    'as' => 'student', 
]); 


Route::get('/{token}/city', [ 
    'uses' => '[email protected]', 
    'as' => 'city', 
]); 

Таким образом, маршрут является либо «студентом», либо «городом». Как определить, какой из методов моего контроллера? Должен ли я даже структурировать свои маршруты? Должен ли я просто указывать им два разных метода?

Я могу с легкостью передать в {token}, например, просто;

public function resumeSurvey($token) 
{ 
+1

В чем проблема с использованием двух разных методов? – monir009

+0

Технически ничего. Но я хотел бы сохранить файл маршрутов как можно меньше. Я видел метод '$ request-> path()' для класса 'Request'. Я могу «взорвать()» из этого, я думаю. – mikelovelyuk

+0

, если у вас есть такая же логика для обоих маршрутов, вы можете использовать один метод для этого – dyachenko

ответ

0

Внутри контроллера вы можете получить текущее название маршрута, получив объект маршрута Illuminate\Routing\Route, на первом месте, затем называя его метод getName.

Следующие два способа являются одинаковыми.

public function resumeSurvey($token) 
{ 
    $routeName = Route::getCurrentRoute()->getName(); 

    $routeName = $this->getRouter()-> getCurrentRoute()->getName()); 
} 
0

Вы должны использовать разные методы, если хотите сделать что-то другое.

Пример:

Route::get('/{token}/student', [ 
    'uses' => '[email protected]', 
    'as' => 'student', 
]); 


Route::get('/{token}/city', [ 
    'uses' => '[email protected]', 
    'as' => 'city', 
]); 

И в вашем контроллере вы должны иметь два метода:

public function resumeStudent($token) { 

} 

public function resumeCity($token) { 

} 

Тогда ваш первый маршрут проходит в resumeStudent и Отер пути к resumeCity.

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