Php 将参数从路由传递给控制器
在我的路由文件中,我有Php 将参数从路由传递给控制器,php,laravel,laravel-5,Php,Laravel,Laravel 5,在我的路由文件中,我有 Route::get('/{token}/student', [ 'uses' => 'SurveyController@resumeSurvey', 'as' => 'student', ]); Route::get('/{token}/city', [ 'uses' => 'SurveyController@resumeSurvey', 'as' => 'city', ]); 所以路线不是“学生”就是“城市
Route::get('/{token}/student', [
'uses' => 'SurveyController@resumeSurvey',
'as' => 'student',
]);
Route::get('/{token}/city', [
'uses' => 'SurveyController@resumeSurvey',
'as' => 'city',
]);
所以路线不是“学生”就是“城市”。如何确定控制器方法中的哪一个?我应该像这样安排我的路线吗?我应该给他们指出两种不同的方法吗
我可以很容易地传入{token}
,例如,只需使用
public function resumeSurvey($token)
{
如果你想做不同的事情,你应该使用不同的方法 例如:
Route::get('/{token}/student', [
'uses' => 'SurveyController@resumeStudent',
'as' => 'student',
]);
Route::get('/{token}/city', [
'uses' => 'SurveyController@resumeCity',
'as' => 'city',
]);
在控制器中,您应该有两种方法:
public function resumeStudent($token) {
}
public function resumeCity($token) {
}
然后,您的第一条路由转到ResumeStudion,第二条路由转到resumeCity,在控制器内部,您可以通过首先获取路由对象
照明\路由\路由
,然后调用其方法获取名称
,来获取当前路由名称
接下来的两种方法是相同的
public function resumeSurvey($token)
{
$routeName = Route::getCurrentRoute()->getName();
$routeName = $this->getRouter()-> getCurrentRoute()->getName());
}
使用两种不同的方法有什么问题?从技术上讲没有什么问题。但我希望我的路线文件尽可能小。我确实看到了
request
类的$request->path()
方法。我可以explode()