如何通过View::first使用Laravel Blade的动态模板详解

前言

本文主要给大家介绍了关于View::first使用Laravel Blade动态模板的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。

当创建动态组件或者页面的时候,有时候我们想当自定义模版存在的时候展示它,否则展示默认的模版。

例如,当我们创建页面模块的时候,通常需要给“关于我们”和“联系我们”自定义模版(如展示照片或者联系表单),而“我们的服务”则可以使用默认模板。

我们可以通过一系列的 if 判断或者使用 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
);

必须给这个方法的第一个参数传递一个数组,当第一个存在的时候,就将使用它。

当然,你可以传递任意个数的模版,你甚至还可以使用动态名称:

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

此外,你还可以通过 Facade 版本的这个功能:

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

这个动态选择模版的 Blade 方法是在 Laravel 5.5 中引入的,使得处理动态模版更加简洁,不需要额外的条件判断了。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对我们的支持。

(0)

相关推荐

  • Laravel框架中Blade模板的用法示例

    简介 Blade它不像其他流行的 PHP 模板引擎那样限制你在视图中使用原生的 PHP 代码,事实上它就是把 Blade 视图编译成原生的 PHP 代码并缓存起来.缓存会在 Blade 视图改变时而改变,这意味着 Blade 并没有给你的应用添加编译的负担.Blade 视图文件使用 .blade.php 后缀,一般情况下都被存储在 resources/views 目录. 1. 继承.片段.占位.组件.插槽 1.1 继承 1.1.1 定义父模板 Laravel/resources/views/ba

  • Laravel中的Blade模板引擎示例详解

    前言 本文主要给大家介绍了关于Laravel中Blade模板引擎的相关内容,分享出来供大家参考学习,话不多说了,来一起看看详细的介绍吧. Blade 模板引擎 Blade 是 laravel 提供的一个简单强大的模板引擎,它是把 Blade 视图编译成原生的 PHP 代码并缓存起来.缓存会在 Blade 视图改变时而改变,这意味着 Blade 并没有给你的应用添加编译的负担.Blade 视图文件使用 .blade.php 后缀,一般都存储在 resources/views 目录下. 模板继承 先

  • Laravel模板引擎Blade中section的一些标签的区别介绍

    Laravel 框架中的 Blade 模板引擎,很好用,但是在官方文档中有关 Blade 的介绍并不详细,有些东西没有写出来,而有些则是没有说清楚.比如,使用中可能会遇到这样的问题: 1.@yield 和 @section 都可以预定义可替代的区块,这两者有什么区别呢? 2.@section 可以用 @show, @stop, @overwrite 以及 @append 来结束,这三者又有什么区别呢? 本文试对这些问题做一个比较浅显但是直观的介绍. @yield 与 @section 首先,@y

  • Laravel 5框架学习之Blade 简介

    在多个页面中我们可能包含相同的内容,像是文件头,链接的css或者js等.我们可以利用布局文件完成这个功能. 让我们新建一个布局文件,例如 views/layout.blade.php <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <link rel="s

  • 如何通过View::first使用Laravel Blade的动态模板详解

    前言 本文主要给大家介绍了关于View::first使用Laravel Blade动态模板的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 当创建动态组件或者页面的时候,有时候我们想当自定义模版存在的时候展示它,否则展示默认的模版. 例如,当我们创建页面模块的时候,通常需要给"关于我们"和"联系我们"自定义模版(如展示照片或者联系表单),而"我们的服务"则可以使用默认模板. 我们可以通过一系列的 if 判断或者使用 v

  • 基于laravel Request的所有方法详解

    获取请求的实例 通过 Facade Request 这个 facade 可以让我们得到绑定在容器里的当前这个请求.比如: $name = Request::input('name'); 注意,如果你在一个命名空间里,你需要在类文件的顶部使用 use Request; 这条声明来导入 Request 这个 facade . 通过依赖注入 要通过依赖注入得到当前 HTTP 请求的实例,需要在你的控制器构造函数或者方法里 type-hint 类.当前请求的这个实例会被 Service Containe

  • 使用 Docker 搭建 Laravel 本地环境的教程详解

    Laravel 官方提供 Homestead 和 Valet 作为本地开发环境,Homestead 是一个官方预封装的 Vagrant Box,也就是一个虚拟机,但是跟 docker 比,它占用体积太大,启动速度慢,同时响应速度很慢,现在有了 docker 这种更好的方式,可以轻松方便的搭建整套 PHP 开发环境. 本文就介绍如何使用 docker 搭建 Laravel 本地环境. 安装 docker 首先安装 docker. 克隆 laradock laradock 官方文档: http://

  • laravel高级的Join语法详解以及使用Join多个条件

    在laravel中我们常常会使用join,leftjion和rightjoin进行连表查询,非常的方便,但是我今天遇到一个问题,就是链表查询需要on多个条件,即我要订单的id和发货人都一样,默认的join只支持单个查询,所以我下面总结两种方法: 一.使用原是表达式(不推荐) 原生SQL中我们可以通过如下方法进行 select * from `orders` left join `users` on `orders`.`usename`=`users`.`usename` and `orders`

  • 基于laravel缓冲cache的用法详解

    一.在控制器中引用: use cache; 二.基本方法及使用 1.put() 键 值 有效时间(分钟) Cache::put('key1','val1',10); 2.add() 若key2不存在,则添加成功 否则,添加失败 Cache::add('key2','val2',20); 3.forever() 永久保存对象到缓存 Cache::forever('key3','val3'); 4.has() 判断是否存在 Cache::has('key1'); 5.get() 取值 Cache::

  • docker在win10家庭版下构建laravel开发环境的教程详解

    操作系统: win10 家庭版 安装docker: 官网下载的docker无法安装成功,提示操作系统版本问题~~~~ 所以直接下载了阿里提供的docker安装包: http://mirrors.aliyun.com/doc ... 社区版是-ce后缀的 阿里镜像加速 首先登录阿里云 查找容器镜像服务 win10找到C:Users用户.dockermachinemachinesdefault底下有个config.json文件,在属性RegistryMirror添加加速器地址,docker虚拟机重启

  • Laravel中Kafka的使用详解

    本文并没有kafka的安装教程,本文是针对已经安装kafka及其配置好kafka的php拓展并且使用laravel框架进行开发项目,配置一个可供laravel框架使用的生产及消费者类. 以下代码修改自本站的YII框架关于kafka类的代码,经过测试使用在本人的项目中,可正常运行,larvael版本:5.6 代码放置larvael框架位置:app/Tools/Kafka.php <?php namespace App\Tools; use Illuminate\Config\Repository;

  • Android 深入探究自定义view之事件的分发机制与处理详解

    目录 题引 Activity对事件的分发过程 父布局拦截的分发处理过程 ACTION_DOWN 事件 ACTION_MOVE 事件 父布局不拦截时的分发处理过程 ACTION_DOWN ACTION_MOVE 解决冲突方案 外部拦截 内部拦截 本文主要探讨下面几个问题: 学习事件分发机制是为了解决什么问题 Activity对事件的分发过程 父布局拦截的分发处理过程 父布局不拦截时的分发处理过程 冲突解决方案 题引 事件只有一个,多个人想要处理,处理的对象不是我们想给的对象就是事件冲突. 如上图,

  • Laravel手动分页实现方法详解

    本文实例讲述了Laravel手动分页实现方法.分享给大家供大家参考,具体如下: 这里的演示实例基于Laravel的5.2版本 在开发过程中有这么一种情况,你请求Java api获取信息,由于信息较多,需要分页显示.Laravel官方提供了一个简单的方式paginate($perPage),但是这种方法只适用model.查询构建器. 今天说下 给定一个数组如何实现 和paginate方法一样的效果. 查看paginate方法源码 #vendor/laravel/framework/src/Illu

  • Laravel框架表单验证详解

    基础验证例子 复制代码 代码如下: $validator = Validator::make( array('name' => 'Dayle'), array('name' => 'required|min:5') ); 传递给 make 函数的第一个参数是待验证的数据,第二个参数是对该数据需要应用的验证规则. 多个验证规则可以通过 "|" 字符进行隔开,或者作为数组的一个单独的元素. 通过数组指定验证规则 复制代码 代码如下: $validator = Validator

随机推荐