Laravel如何创建区域

Laravel如何创建区域,laravel,Laravel,我之所以提到这些领域,是因为我以前使用过ASP.NETCore,我可以通过一些功能或部门来分离我的应用程序结构。每个人都可以有自己的控制器和布局等 我正在从事的一个项目要求我复制整个应用程序,只需更改内容 现在主要的布局是这样的 views home index layouts navbar footer ... 您只需在Laravel的核心文件夹结构中执行此操作 假设您有两个区域:Admin和Guest

我之所以提到这些领域,是因为我以前使用过ASP.NETCore,我可以通过一些功能或部门来分离我的应用程序结构。每个人都可以有自己的控制器和布局等

我正在从事的一个项目要求我复制整个应用程序,只需更改内容

现在主要的布局是这样的

views 
    home
        index
    layouts
        navbar
        footer
        ...
   

您只需在Laravel的核心文件夹结构中执行此操作

假设您有两个区域:
Admin
Guest

您可以在
app
目录的顶层将两者分开。然后在每个文件夹中复制典型的Laravel文件夹结构

app
   admin
        Http
            Controllers
            Middleware
            ...
        Models
        ...
   guest
        Http
            Controllers
            Middleware
            ...
        Models
        ...
然后在resources文件夹中,您可以匹配视图的分隔:

resources
    views
        admin
            layouts
                admin.blade.php
            index.blade.php
        guest
            layouts
                admin.blade.php
            index.blade.php
然后使用点语法从控制器调用视图

view('admin.index')
这种方式需要注意的一点是,您可能需要在两个区域(如
User
)之间共享模型,因此您也必须管理一个“全局”区域。 只要确保遵循正确的名称空间和类导入,就可以了

另一种方法,我个人更喜欢,是在现有的文件夹结构中分离事物。例如,您的控制器将位于:

app
    Http
        Controllers
            Admin
                DashboardController.php
            Guest
                 WelcomeController.php
同样,您可以用相同的方式分隔视图

您可以更进一步,通过在
RouteServiceProvider

/**
 * Define the routes for the application.
 *
 * @return void
 */
public function map()
{
    $this->mapApiRoutes();

    $this->mapWebRoutes();

    $this->mapAdminRoutes();

    $this->mapGuestRoutes();
}

/**
 * Define the "admin" routes for the application.
 *
 * @return void
 */
protected function mapAdminRoutes()
{
    Route::prefix('admin')
        ->middleware('admin')
        ->namespace($this->namespace)
        ->group(base_path('routes/admin.php'));
}
最后,这种分离只是为了您自己的利益,因为最终任何类都可以从任何一个“区域”导入到任何其他“区域”,控制器可以从资源文件夹中的任何“区域”渲染视图。
这只是一个如何组织事情的问题。

Laravel对实现类似的目录结构没有限制,无论是在视图控制器还是应用程序中。只要您有合适的名称空间,您就可以了。