从路径将参数传递给控制器

时间:2016-01-18 11:19:01

标签: php laravel laravel-5

在我的路线档案中,我有;

Route::get('/{token}/student', [
    'uses' => 'SurveyController@resumeSurvey',
    'as' => 'student',
]);


Route::get('/{token}/city', [
    'uses' => 'SurveyController@resumeSurvey',
    'as' => 'city',
]);

所以路线是“学生”或“城市”。如何确定控制器方法中的哪一个?我是否应该像这样构建我的路线?我应该只指出两种不同的方法吗?

我可以轻松传入{token},例如只用;

public function resumeSurvey($token)
{

2 个答案:

答案 0 :(得分:0)

如果您想要做不同的事情,您应该使用不同的方法。

示例:

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) {

}

然后您的第一条路线转到 resumeStudent 以及通往 resumeCity 的路线。

答案 1 :(得分:0)

在控制器内部,您可以通过首先获取路由对象Illuminate\Routing\Route来获取当前路由名称,然后调用其方法getName

接下来的两种方式是相同的。

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

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