Laravel Blade 动态模版 & View::first
44

file

当构建动态组件或页面时,可能会根据不同的需求显示自定义模板(如果存在)或以其他方式返回默认模板。

例如,假设我们正在构建一个页面模块,有一些页面如「关于我们」或「联系我们」,需要一个自定义模板(例如显示图片或联系人表单),而其他页面类似「服务条款」 则是需要默认的视图模板。

通常,我们会通过一系列条件判断来解决这个问题,或者通过使用 view()->exists() 来检查自定义模板是否存在。而现在,Laravel 5.5 给了我们一个更好、更优雅的方式来解决这个问题。(以下内容你也可以通过 视频 了解到)

使用 View::first

如果使用 view()->exists() 方法,你的代码可能要这样写:

if (view()->exists('custom-template')) {
    return view('custom-template', $data);
}

return view('default-template', $data);

现在我们换成更简单、更具可读性的 View::first 方法:

return view()->first(
    ['custom-template', 'default-template'], $data
);

在上面的方法中,你必须传递一个模板数组作为第一个参数,该方法会加载它找到的数组中的第一个模板。

你可以传递大量模板,甚至使用动态名称:

return view()->first([
    "pages/{$page->slug}",
    "pages/category-{$page->category->slug}",
    "pages/default-template"
], $data);

你也可以使用这个功能的 Facade :

\View::first($templates, $data)

这种动态视图加载功能已经被添加到 Laravel v5.5 中的 Blade 模版中,让处理动态模板的代码更优雅。

本文翻译自:https://laravel-news.com/viewfirst

Stay Hungry, Stay Foolish.

本帖由 Summer 于 1年前 加精
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 10
GhostCoder

其实我想问 你这文章的 Banner 怎么弄的

1年前

@莫扎特 淡定,大佬们通常一目十行,知道有这个东西就好了。

1年前
GhostCoder

@JokerLinly 感谢:smile:

1年前
sane

:bowtie:

1年前
736713830

:smile:

1年前

@JokerLinly 看来有UI 功底啊

1年前

@莫扎特 点赞=收藏

11个月前

请问一下,我看到上面的例子有多个blade,但是返回的数据都是$data。如果我每个blade对应数据都一样,怎么办?就像这样
return view()->first(
['view0', 'view1','view2'], $data0,$data1,$data2
);
可以吗?

11个月前

@Complicated 目测不行

11个月前

  • 请注意单词拼写,以及中英文排版,参考此页
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,使用方法请见 Emoji 自动补全来咯,可用的 Emoji 请见 :metal: :point_right: Emoji 列表 :star: :sparkles:
  • 上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jpg, png, gif
  • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
  请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!