Laravel Blade 动态模版 & View::first

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

本作品采用《CC 协议》,转载必须注明作者和本文链接
Stay Hungry, Stay Foolish.
本帖由 Summer 于 6年前 加精
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 10
阿麦

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

6年前 评论

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

6年前 评论
阿麦

@JokerLinly 感谢:smile:

6年前 评论
sane

:bowtie:

6年前 评论
Complicated

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

6年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!