繁体   English   中英

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

[英]Laravel: How do I register a route at runtime?

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

通过在路由文件中包含Route :: resource,它们具有所有标准路由的功能并且可以正常工作,因此/ invoices显示索引页面,/ invoices / 1 / edit显示标准编辑页面,等等。

我想构建/ invoices / uploadcsv的路由以实现标准功能-我可以以某种方式覆盖Route :: resource以便每个脚手架模型和控制器都立即具有此路由,并将其传递给Controller的uploadCSV函数吗?

谢谢,

我只想提供以下方法作为有条件地动态更改路由目标的选项。

<?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);
    }
});

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

您可以尝试创建自己的Router类并implements这些类。

还添加您自己的uploadCSV函数。

要么

在注册资源之前,只需分别向该方法添加路由:

Route::get('upload', 'FooController@uploadCSV');
Route::resource('foo', 'FooController');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM