Laravel路线不适用于子文件夹

时间:2018-07-05 08:16:48

标签: laravel laravel-5 routes laravel-5.1

使用现在从4.2迁移的Laravel 5,将laravel 5安装在子文件夹“ abc”中,我是否必须为每条路线编写abc /仓库?以前是/仓库。我想使用所有现有的路由,例如abc子目录下的/ warehouse。

我使用端口81在localhost xampp上。http://localhost:81/warehouse

这里的任何人都有快速解决方案

2 个答案:

答案 0 :(得分:1)

您在定义路线时使用prefix

Route::prefix('abc')->group(...)

Route Prefixes

Route::prefix('abc')->group(function () {
    Route::get('warehouse', function () { 
        // Matches The "/abc/warehouse" URL
     }); 
});

理想情况下,您应该在RouteServiceProvider

中进行操作
Route::middleware('web')
   ->prefix('abc')
   ->namespace($this->namespace)
   ->group(base_path('routes/web.php'));

通过这种方式,路由文件中的所有内容都将添加前缀,并且您不需要额外的分组换行。

这是5.0文档中的示例:

Route::group(['prefix' => 'admin'], function() {
    Route::get('users', function() { 
        // Matches The "/admin/users" URL
     });
 });

答案 1 :(得分:0)

您可以做的就是在RouteServiceProvider函数的mapWebRoutes中添加一行

public function mapWebRoutes()
{
    //default 
    Route::middleware('web')
             ->namespace($this->namespace)
             ->group(base_path('routes/web.php'));

    //subfolder
    Route::middleware('web')
             ->prefix('abc')
             ->namespace($this->namespace)
             ->group(base_path('routes/abc.php'));
}

然后在routes/abc.php内创建一个文件,并将所有路由复制粘贴到其中

路由前缀https://laravel.com/docs/5.6/routing#route-group-prefixes

对于laravel 5.0,您必须包装在Route::group

Route::group(['prefix' => 'abc', 'namespace' => 'Auth'], function(){
     //define all your routes here     
     Route::post('login', 'AuthController@login');

});

命名空间:在这里,我在命名空间中定义了Auth,这意味着我所有的控制器,例如AuthController文件都应位于app/Http/Controllers/Auth文件夹中。

Laravel路线5.0 https://laravel.com/docs/5.0/routing#route-group-prefixes

对于laravel 5.0命名空间结构,请检查此https://laravel.com/docs/5.0/structure