使用PhpStorm自动完成功能在Laravel中管理400多条路线

时间:2016-12-28 14:13:50

标签: php laravel routes phpstorm code-design

我想知道如何处理400多条路线。

我们目前根据它们所属的控制器命名空间将所有路由分成多个文件。

App/Http/Routes的结构看起来像这样:

- Auth.php
- Marketing.php
- Orders.php

我们所有的路线都被命名。但是这里出现了我们遇到的实际问题。

我们的路线是使用填充了定义路径名称的常量的类来命名的。

namespace App\Http\Controllers\Marketing;

class RouteConstants
{
    /**
     * MarketingController
     */
    const INDEX = 'marketing.index';
    const DISABLED = 'marketing.disabled';

这些常量类位于Controller名称空间中。然后将它们用在Marketing.php路由文件中,如下所示:

/**
 * Marketing Routes
 */
Route::group(['namespace' => 'App\Http\Controllers\Marketing'], function() {

    /**
     * MarketingController Routes
     */
    Route::get('marketing/overview', [
        'uses' => 'MarketingController@index',
        'as' => MarketingRoutes::INDEX
    ]);

    Route::get('marketing/disabled', [
        'uses' => 'MarketingController@showDisabled',
        'as' => MarketingRoutes::DISABLED
    ]);```

这样做是因为它允许我们使用PhpStorm自动完成功能,并查看每个路由的使用位置。

但问题是我们同时使用两个系统。 Laravel的内部路由命名系统,同时我们使用自己的系统将名称定义为常量。

必须有更好的方法来管理这些路线,并有办法检查项目文件中的用法。

目前我们的观点也非常混乱:

<a href="{{ route(App\Http\Controllers\Marketing\RouteConstants::INDEX) }}">Marketing</a>

我已经为PhpStorm尝试了Laravel插件,但是如果文件夹中包含自动加载到RouteServiceProvider的路径,则无法正常工作。

2 个答案:

答案 0 :(得分:1)

我认为如果你在控制器中走到const那么文本会更短,只需使用普通名称。然后你的观点会更好。

你可以在另一边查看Route :: resource中的文档,你的路径文件将变得更小,因为它会自动设置所有crud路由,然后将责任传递给控制器​​

答案 1 :(得分:1)

在PhraStorm的Laravel插件(版本0.11)的更改日志中注明,为Laravel 5.3的路由结构添加了支持。

我建议你将routes目录移动到项目的根目录。就像Laravel 5.3一样。 例如:app/Http/Routes/变为routes/

当使用插件版本0.11并且你有5.3文件夹结构时,我认为没有理由自动建议路由名称不起作用。

希望这有帮助!