laravel 5中的多个路径文件而不是一个主路径文件

log*_*man 5 php laravel

我是使用Laravel 5进行Web开发的新手.我安装了asGgardCMS,在看到asgardCms代码后,我发现app/Http/route.php文件中没有任何代码,路由所需的代码放在模块代码中.例如,路由菜单管理器模块的必需代码放在Modules/Media/apiRoutes.php和Modules/Media/backendRoutes.php文件中.可以帮助我,告诉我如何管理我的路线?

Mah*_*alt 11

  1. 创建2个路由文件routes.web.phproutes.api.php.

  2. 编辑RouteServiceProvider.php文件看起来像下面的例子:


<?php

namespace App\Providers;

use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
use Illuminate\Routing\Router;

class RouteServiceProvider extends ServiceProvider
{

    /**
     * This namespace is applied to the controller routes in your routes file.
     *
     * In addition, it is set as the URL generator's root namespace.
     *
     * @var string
     */
    protected $webNamespace = 'App\Http\Controllers\Web';

    protected $apiNamespace = 'App\Http\Controllers\Api';

    /**
     * Define your route model bindings, pattern filters, etc.
     *
     * @param  \Illuminate\Routing\Router $router
     *
     * @return void
     */
    public function boot(Router $router)
    {
        //

        parent::boot($router);
    }

    /**
     * Define the routes for the application.
     *
     * @param  \Illuminate\Routing\Router $router
     *
     * @return void
     */
    public function map(Router $router)
    {

        /*
        |--------------------------------------------------------------------------
        | Web Router 
        |--------------------------------------------------------------------------
        */

        $router->group(['namespace' => $this->webNamespace], function ($router) {
            require app_path('Http/routes.web.php');
        });

        /*
        |--------------------------------------------------------------------------
        | Api Router 
        |--------------------------------------------------------------------------
        */

        $router->group(['namespace' => $this->apiNamespace], function ($router) {
            require app_path('Http/routes.api.php');
        });

    }
}
Run Code Online (Sandbox Code Playgroud)

注意:您可以根据需要添加任意数量的路径文件...


Sil*_*law 9

您可以根据需要在任何地方创建任意数量的路由文件,然后只需要在主路由文件中使用它们,例如:

Route::get('/', function () {
    return 'Hello World';
});

Route::post('foo/bar', function () {
    return 'Hello World';
});

require_once "../../myModule1/routes.php";
require_once "../../myModule2/routes.php"
require_once "some_other_folder/routes.php"
Run Code Online (Sandbox Code Playgroud)

您将以与 main 相同的方式定义路由


小智 8

Laravel的Route上的group()方法可以接受文件名,所以我们可以这样:

// web.php

Route::prefix('admin')
    ->group(base_path('routes/admin.php'));

// admin.php
Route::get('/', 'AdminController@index');
Run Code Online (Sandbox Code Playgroud)


Ale*_*lex 7

您可以使用Request::is()这样您的主routes.php文件将如下所示:

if(Request::is('frontend/*))
{
    require __DIR__.'/frontend_routes.php;
}

if(Request::is('admin/*))
{
    require __DIR__.'/admin_routes.php;
}
Run Code Online (Sandbox Code Playgroud)

你可以在这里阅读更多。


tom*_*mmy 3

您可以在服务提供商内加载自定义路由文件。AsgardCMS也是这样做的,请参阅加载后端路由的Core RoutingServiceProvider中的这个方法:

https://github.com/AsgardCms/Core/blob/master/Providers/RoutingServiceProvider.php#L77

Laravel 文档在包开发部分提供了一个简单的示例:

http://laravel.com/docs/5.1/packages#routing