所以我想填充键,但是它在控制器内部时填充另一个参数,我看到它将首先填充第一个参数。 反正还有钥匙吗?将去$ 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);
}
答案 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。
在这种情况下,您必须还原路线顺序,因此最难实现的路线将排在首位。