在 Laravel Blade 中使用 View::first 实现动态模板
发布于 作者: Duilio Palacios
在构建动态组件或页面时,我们有时希望在存在自定义模板的情况下显示它,否则回退到默认模板。
例如,假设我们正在构建一个页面模块,一些页面(如“关于我们”或“联系我们”)需要自定义模板(例如显示图片或联系表单),而其他页面(如“服务条款”)则可以使用默认模板。
我们可以通过一系列条件语句来解决这个问题,或者使用 view()->exists() 来检查自定义模板是否存在,但是,Laravel 5.5 为我们提供了一种更优雅、更简洁的方式,正如我在下面的视频中演示的那样。
使用 View::first
view()->first() 方法允许我们用更简单、更具表达力的版本替换以下代码。
if (view()->exists('custom-template')) { return view('custom-template', $data);} return view('default-template', $data);
使用更简单、更具表达力的版本。
return view()->first( ['custom-template', 'default-template'], $data);
您需要将模板数组作为第一个参数传递,first 方法将加载它找到的第一个模板。
当然,您可以传递任意多个模板,甚至可以使用动态名称。
return view()->first([ "pages/{$page->slug}", "pages/category-{$page->category->slug}", "pages/default-template"], $data);
请记住,您也可以使用其 facade 版本来使用此功能。
\View::first($templates, $data)
此动态视图加载功能是在 Laravel v5.5 中添加到 Blade 的,它是一种在处理动态模板时保持控制器简洁,避免额外条件语句的好方法。
我是一名 PHP/Laravel 开发人员和教师。我创建了 Styde.net,一个致力于向西班牙社区教授 PHP、Laravel、Vue.js 和其他 web 技术的网站。