【问题标题】:How to write laravel 5.8 controllers routes similar to laravel 5.1如何编写类似于 laravel 5.1 的 laravel 5.8 控制器路由
【发布时间】:2019-11-08 02:53:05
【问题描述】:

拥有 20 多个控制器。为添加、编辑和删除设置每条路由非常困难(还有更多操作)。

这是我的 laravel 5.1 routes.php :

Route::controllers([
  'user' => 'UserController',
  'taxes' => 'TaxController',
]);

有什么方法可以在 laravel 5.8 中支持这些路由吗?

【问题讨论】:

标签: laravel laravel-5.1 laravel-5.8


【解决方案1】:

您可以在数组中使用,在您调用路由时使用。喜欢{{route('claimsubmit')}}

Route::resource('claimform',array('as'=>'claimform','uses'=>'UserController@claimform');

【讨论】:

    【解决方案2】:

    您可以使用Resource Controller 并在routes/web.php 中实现。它将自动生成路线的名称

    //web.php
    
    Route::resource('user', 'UserController'); 
    Route::resource('taxes', 'TaxController'); 
    

    编辑 1

    如果你想为资源排除控制器的show方法,你可以在except方法里面添加数组。

    Route::resource('taxes', 'TaxController', [
        'except' => ['show']
    ]);
    

    此外,如果您只想获得选定的选项,您可以使用only

    Route::resource('taxes', 'TaxController', [
        'only' => ['index', 'create', 'store', 'edit']
    ]);
    

    【讨论】:

    • 应该是routes/web.php 而不是api/web.php
    • 感谢重播。我试过这个,但需要显示方法。我收到错误 App\Http\Controllers\UserController::show 不存在。
    • @Komal 你必须使用php artisan make:controller TaxesController --resource 创建一个资源控制器。它会给你一个很好的 CRUD 样板。
    • 基本上我正在将我的 5.1 项目转换为 5.8,我不想更改我的代码。在大型项目上工作 80% 已完成,但我正在切换到 laravel 5.8 的一项功能
    • 资源控制器与任何控制器都不相同。这个答案只有在 OP 控制器是资源控制器时才有效,而且我们没有任何迹象表明它们是。
    【解决方案3】:

    controllers 方法在 Laravel 5.2 中已被弃用。来自升级指南:

    使用 Route::controller 的隐式控制器路由已被弃用。请在您的路由文件中使用显式路由注册。

    1) 使用资源路由

    如果您的控制器使用标准的indexstoreshow 等方法,您可以简单地使用资源路由。例如:

    Route::resource('user', 'UserController');
    

    但是,如果您想排除某些方法,您可以将它们添加到资源中。例如:

    Route::resource('user', 'UserController', ['except' => 'show']);
    

    2) 显式声明路由

    你可以按照上面的 Laravel 5.2 升级指南,明确声明每条路由。

    3) 创建宏

    Laravel 路由器是可宏的。这意味着您可以向其中添加自己的方法。例如,在您的应用服务提供商中,您可能有以下内容:

    Illuminate\Routing\Router::macro('controllers', function ($routes) {
        // Create your own implementation of the controllers method.
    });
    

    这允许您创建自己的 controllers 方法实现,这意味着您不需要更改路由或控制器,但您可能需要深入了解 Laravel 的路由处理以了解如何实现它.

    我希望这会有所帮助。

    【讨论】:

    • 好的.. 我会设置我的路线
    猜你喜欢
    • 2019-11-26
    • 2016-10-19
    • 2020-11-18
    • 2018-04-07
    • 2019-09-22
    • 2014-07-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多