我有一个具有StandardModel和StandardConnector特性的Laravel应用程序,我正在将其应用于我的绝大多数模型和连接器。
通过在路由文件中包含Route::resource,这些路由具有适用于所有标准路由的功能,并且可以完美地工作,因此/invoices显示索引页,/invoices/1/edit显示标准编辑页,等等。
我想构建一个/invoices/uploadcsv的路由来实现标准功能--我能以某种方式重写Route::resource吗?这样每个脚手架模型和控制器都能立即拥有这个路由,并将其传递给控制器的uploadCSV函数?
谢谢,
发布于 2019-02-17 19:18:05
我只想给出下面的方法,作为一个有条件地动态改变路由目标的选项。
<?php
Route::post('{model}/upload', function($model){
switch ($model) {
case 'foo':
return App::call('\App\Http\Controllers\FooController@uploadCsv');
case 'bar':
return App::call('\App\Http\Controllers\BarController@uploadCsv');
default:
abort(404);
}
});
Route::get('{model}/show-upload', function($model){
switch ($model) {
case 'foo':
return App::call('\App\Http\Controllers\FooController@showUpload');
case 'bar':
return App::call('\App\Http\Controllers\BarController@showUpload');
default:
abort(404);
}
});发布于 2019-02-17 14:56:56
请参阅名为\Illuminate\Routing\Router的文件。您将获得所有资源方法。
您可以尝试创建自己的路由器类并对这些类执行implements操作。
还要添加您自己的uploadCSV函数。
或
在注册资源之前,只需向该方法单独添加一个路由:
Route::get('upload', 'FooController@uploadCSV');
Route::resource('foo', 'FooController');https://stackoverflow.com/questions/54730861
复制相似问题