首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Laravel:如何在运行时注册路由?

Laravel:如何在运行时注册路由?
EN

Stack Overflow用户
提问于 2019-02-17 14:49:31
回答 2查看 344关注 0票数 0

我有一个具有StandardModel和StandardConnector特性的Laravel应用程序,我正在将其应用于我的绝大多数模型和连接器。

通过在路由文件中包含Route::resource,这些路由具有适用于所有标准路由的功能,并且可以完美地工作,因此/invoices显示索引页,/invoices/1/edit显示标准编辑页,等等。

我想构建一个/invoices/uploadcsv的路由来实现标准功能--我能以某种方式重写Route::resource吗?这样每个脚手架模型和控制器都能立即拥有这个路由,并将其传递给控制器的uploadCSV函数?

谢谢,

EN

回答 2

Stack Overflow用户

发布于 2019-02-17 19:18:05

我只想给出下面的方法,作为一个有条件地动态改变路由目标的选项。

代码语言:javascript
复制
<?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);
    }
});
票数 1
EN

Stack Overflow用户

发布于 2019-02-17 14:56:56

请参阅名为\Illuminate\Routing\Router的文件。您将获得所有资源方法。

您可以尝试创建自己的路由器类并对这些类执行implements操作。

还要添加您自己的uploadCSV函数。

在注册资源之前,只需向该方法单独添加一个路由:

代码语言:javascript
复制
Route::get('upload', 'FooController@uploadCSV');
Route::resource('foo', 'FooController');
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54730861

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档