Laravel如何创建区域
我之所以提到这些领域,是因为我以前使用过ASP.NETCore,我可以通过一些功能或部门来分离我的应用程序结构。每个人都可以有自己的控制器和布局等 我正在从事的一个项目要求我复制整个应用程序,只需更改内容 现在主要的布局是这样的Laravel如何创建区域,laravel,Laravel,我之所以提到这些领域,是因为我以前使用过ASP.NETCore,我可以通过一些功能或部门来分离我的应用程序结构。每个人都可以有自己的控制器和布局等 我正在从事的一个项目要求我复制整个应用程序,只需更改内容 现在主要的布局是这样的 views home index layouts navbar footer ... 您只需在Laravel的核心文件夹结构中执行此操作 假设您有两个区域:Admin和Guest
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对实现类似的目录结构没有限制,无论是在视图控制器还是应用程序中。只要您有合适的名称空间,您就可以了。