Laravel刀片 - 多种布局?

SeK*_*Kra 8 layout laravel

我很难绕过laravels刀片布局.

互联网上的所有示例和文档(例如laravel文档:https://laravel.com/docs/5.3/blade 或youtube上的视频教程)仅使用一个master.blade.php作为布局.

对于更复杂的项目,是否有最佳实践?

我的项目中包含以下内容类型:

  • 产品
  • 类别
  • 博客
  • 分类
  • 行政的
  • 登录/ AUTH

所有这些内容类型都有不同的布局:

  • 不同/没有侧边栏
  • 左/右边栏
  • 不同的标题
  • 内容之前没有/横幅
  • 不同/没有菜单
  • 不同/没有面包屑

所以我不知道在什么情况下......

  1. 创建一个新的布局文件(例如/views/layouts/product.blade.php)并在我的页面中扩展它(在/views/pages/product.blade.php中使用@extends("layouts.product"))

... 要么 ...

  1. 仅使用一个包含所有不同类型的布局文件,并将它们实现为每种类型的页面文件中的部分.

这个让我疯狂的现在,我找不到任何有价值的东西,比如最好的做法是否使用布局.

非常感谢你的帮助!

ide*_*ara 6

布局结构很容易变得一团糟,这就是为什么强烈建议将布局和局部组织在一个直观的文件夹结构中.通过这样做,您将确保在将来,当您的应用程序增长时,它将保持干净和有条理.这还取决于您正在进行的项目类型.信不信由你,有时文件夹结构因项目而异.

据我所知,没有关于如何组织特定于Laravel的布局文件夹的任何"最佳实践",但这里是我如何组织我的项目的一个例子(并且已经为我的所有Laravel应用程序工作):

views/
??? v1/
?   ??? master
|   |   ??? master-public.blade.php
|   |   ??? master-admin.blade.php
|   |   ??? master-user.blade.php
|   ??? components
|   ?   ??? navigation
|   |   |   ??? public.blade.php
|   |   |   ??? admin.blade.php
|   |   |   ??? user.blade.php
|   |   ??? headers
|   |   ??? footers
|   ??? views
|   |   ??? home
|   |   ??? chat
|   |   ??? order
|   |   ??? reports
|   ??? partials
|   |   ??? ads.blade.php
|   |   ??? sidebar.blade.php
|   ??? public
|   |   ??? registration.blade.php
|   |   ??? login.blade.php
??? v2/
??? v2.2/
Run Code Online (Sandbox Code Playgroud)

这里最重要的一点是,在我的视图目录中,我为每个路径创建一个文件夹,我最终在我的应用程序中.

此外,我认为将父文件夹作为webapp的UI版本非常重要.有时候,当重做UI时,往往只是将文件保存在相同的目录下,这不是很好的长期,因为你最终会在同一个文件夹中为你站点的不同版本提供大量文件.

希望这有帮助!

干杯,祝你好运!

  • @PierreLeBot在制作中,我仍然这样做.这种组织我的Blade视图的特殊方式对于AB测试和一般的UI版本化非常有用.如果我从头开始并且想要坚持这个结构,那么更好的方法是在我的Laravel项目中创建一个git子模块,它包含我所有与UI相关的东西,并使用git标签提交每个版本.这样,您就不必在每个新版本中复制/粘贴大量文件,从而使您的应用程序大小更小.目前,我正在将我的所有观点转移到VueJS.希望这可以帮助! (2认同)

Ale*_*nin 5

好的做法是扩展一些主布局,然后使用@include@each包含侧边栏、页脚、页眉、横幅视图等。即使对于非常大的项目,这也非常有效。有时您想将@if运算符用于条件包含:

@if (condition)
    @include('some.view')
@else
    @include('another.view')
@endif
Run Code Online (Sandbox Code Playgroud)