可以连接Laravel路由参数和控制器参数吗?

时间:2019-02-06 09:58:12

标签: laravel laravel-5 laravel-routing

所以我想填充键,但是它在控制器内部时填充另一个参数,我看到它将首先填充第一个参数。 反正还有钥匙吗?将去$ key参数和类型?到$ type并填写?还要$ fill吗?

我正在使用Laravel 5.6。*

Route::get('/report', 'ReportAPIController@index')->name('api.report');
Route::get('/report/all', 'ReportAPIController@all')->name('api.report.all');
Route::get('/report/all/key/{key?}', 'ReportAPIController@all')->name('api.report.all.key');
Route::get('/report/all/search/{type?}/{fill?}', 'ReportAPIController@all')->name('api.report.all.type.fill');
Route::get('/report/all/search/{type?}/{fill?}/key/{key?}', 'ReportAPIController@all')->name('api.report.all.type.fill.key');

预期结果:null null测试 / report / all / key / testing

public function all($type = null,$fill = null,$key = null)
{
    dd($type.$fill.$key); 
}

实际结果:测试null null / report / all / key / testing

public function all($type = null,$fill = null,$key = null)
{
    dd($type.$fill.$key); 
}

2 个答案:

答案 0 :(得分:3)

您可以替换all()中的参数,然后键入提示Illuminate\Http\Request

然后,您可以这样做:

use Illuminate\Http\Request; 

public function all(Request $request)
{
    $key  = $request->key;
    $type = $request->type;
    $fill = $request->fill;

    dd($type.$fill.$key); 
}

答案 1 :(得分:0)

访问一条路线时,Laravel会从上到下浏览您的路线列表,直到找到一个“匹配”的路线,然后立即选择此路线。 所以, Route::get('/report/{id}',...Route::get('/report/all,...

对于请求类型的/report/all将与/report/{id}匹配,因为它是第一个MATCH。

在这种情况下,您必须还原路线顺序,因此最难实现的路线将排在首位。