分享5个非常有用的Laravel Blade指令

简介

Blade是Laravel提供的一个非常简单、强大的模板引擎,不同于其他流行的PHP模板引擎,Blade在视图中并不约束你使用PHP原生代码。所有的Blade视图都会被编译成原生PHP代码并缓存起来直到被修改,这意味着对应用的性能而言Blade基本上是零开销。Blade视图文件使用.blade.php文件扩展并存放在resources/views目录下。

接下来我将带大家认识下五个 Laravel Blade 指令,这些指令将让你在解决特定问题时如虎添翼。如果你是刚接触 Laravel 的用户,这些小技巧能带你认识到 Laravel Blade 模板引擎的便捷与高效。

废话少说,让我们开始吧。

1. 检测用户是否认证

你可以通过验证用户是否为空来检测其是否认证:

@if(auth()->user())
 // 用户已认证
@endif

然而,Laravel 自带的 Blade 命令可以更简洁地实现相同的功能:

@auth
 // 用户已认证
@endauth

2. 检测用户是否为访客

与认证相反,我们可以用 auth 辅助函数的 guest() 方法来检测用户是否为访客:

@if(auth()->guest())
 // 用户未认证
@endif

不过 Laravel 也为此提供了 @guest 命令:

@guest
 // 用户未认证
@endguest

我们也可以使用 else 语句来组合这两个命令:

@guest
 // 用户未认证
@else
 // 用户已认证
@endguest

3. 如果第一个视图存在则引入,否则引入第二个

构建多主题站点可能会有一个文件如果存在就引入,否则就引入另一个的需要,你可以简单地使用条件判断来实现:

@if(view()->exists('first-view-name'))
 @include('first-view-name')
@else
 @include('second-view-name')
@endif

不过还是有一个更简洁直观的命令来做这件事:

@includeFirst(['first-view-name', 'second-view-name']);

4. 根据条件引入视图

当你只想在一定逻辑的基础上(如:一个已通过认证的用户)添加一些内容的时候,根据条件引入视图就非常有用了。

你可以使用 @if 条件来这样写:

@if($post->hasComments())
 @include('posts.comments')
@endif

我们可以只用一行命令 @includeWhen 来做到:

@includeWhen($post->hasComments(), 'posts.comments');

5. 引入一个存在的视图

如果你有自定义主题系统或者你需要动态地创建 Blade 视图,那么检查文件是否存在就是必须要做的。

可以在辅助函数 view() 上调用 exists 方法:

@if(view()->exists('view-name'))
 @include('view-name')
@endif

也可以使用 Blade 命令 includeIf 来处理:

@includeIf('view-name')

你可以通过 Blade 官方文档 了解更多实用的技巧来优化你 Laravel 项目里的前端模板。

重构快乐!

总结

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

(0)

相关推荐

  • 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框架中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模板新手入门教程及小技巧

    简介 Blade 是 Laravel 所提供的一个简单且强大的模板引擎.相较于其它知名的 PHP 模板引擎,Blade 并不会限制你必须得在视图中使用 PHP 代码.所有 Blade 视图都会被编译缓存成普通的 PHP 代码,一直到它们被更改为止.这代表 Blade 基本不会对你的应用程序生成负担. Blade 视图文件使用 .blade.php 做为扩展名,通常保存于 resources/views 文件夹内. 为什么要使用blade模板 容易理解,思路清晰 方便,直接可以在框架里使用,可以直

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

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

  • 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

  • 分享5个非常有用的Laravel Blade指令

    简介 Blade是Laravel提供的一个非常简单.强大的模板引擎,不同于其他流行的PHP模板引擎,Blade在视图中并不约束你使用PHP原生代码.所有的Blade视图都会被编译成原生PHP代码并缓存起来直到被修改,这意味着对应用的性能而言Blade基本上是零开销.Blade视图文件使用.blade.php文件扩展并存放在resources/views目录下. 接下来我将带大家认识下五个 Laravel Blade 指令,这些指令将让你在解决特定问题时如虎添翼.如果你是刚接触 Laravel 的

  • 解决Laravel blade模板转义html标签的问题

    解决Laravel blade模板转义html标签的问题: 后台textarea提交到表里面的数据展现到前端页面时(在后台已使用nl2br()函数进行转换),直接显示如下: 很尴尬!!! 解决方法如下: {!! $res->content !!} 中间部分是需要输出到页面的内容 使用{{}}会自动使用php中的htmlspecialchars方法来转义成实体,然后输出 上面那种方法可以不转义输出 新手,马克一下... 以上这篇解决Laravel blade模板转义html标签的问题就是小编分享给

  • 分享很少见很有用的SQL功能CORRESPONDING

    目录 前言 使用CORRESPONDING 使用CORRESPONDING BY 前言 我最近偶然发现了一个标准的SQL特性,令我惊讶的是,这个特性在HSQLDB中实现了.这个关键字是CORRESPONDING ,它可以和所有的集合操作一起使用,包括UNION .INTERSECT .和EXCEPT . 让我们来看看sakila数据库.它有3个表: CREATE TABLE actor ( actor_id integer NOT NULL PRIMARY KEY, first_name var

  • 分享个简单易懂且非常有用的laravel事件

    前言 在开始本文的正文之前,我们先说一下在什么场景会使用这个事件功能. 事情大概是这样的,需求要在用户注册的时候发一些帮助邮件给用户(原本用户在注册之后已经有发别的邮件的了,短信,IM什么的) 原来这个注册的方法也就10多行代码.但是有时候我们为了省事,直接在注册代码后面添加了各种代码. 例如这个注册方法本来是这样的 <?php namespace App\Htt\Controllers; use Illuminate\Http\Request; class UserController ext

  • 分享8点超级有用的Python编程建议(推荐)

    我们在用Python进行机器学习建模项目的时候,每个人都会有自己的一套项目文件管理的习惯,我自己也有一套方法,是自己曾经踩过的坑总结出来的,现在在这里分享一下给大家,希望多少有些地方可以给大家借鉴.

  • 分享50个超级有用的JavaScript单行代码(推荐!)

    目录 前言 日期 字符串 工具 总结 前言 在这篇文章中,我列出了一个系列的50个 JavaScript 单行代码,它们在使用 vanilla js(≥ ES6)进行开发时非常有用.它们也是使用该语言在最新版本中为我们提供的所有功能来解决问题的优雅方式. 我将它们分为以下5大类: 日期 字符串 数字 数组 工具 事不宜迟,我马上开始的,我希望你发现他们对你有帮助! 日期 1. 日期是否正确(有效) 此方法用于检查给定日期是否有效 const isDateValid = (...val) => !

  • 分享19个JavaScript 有用的简写写法

    原文链接,最近很火的一篇文章 This really is a must read for any JavaScript-based developer. I have written this article as a vital source of reference for learning shorthand JavaScript coding techniques that I have picked up over the years. To help you understand

  • 分享13个非常有用的Python代码片段

    目录 1.将两个列表合并成一个字典 2.将两个或多个列表合并为一个包含列表的列表 3.对字典列表进行排序 4.对字符串列表进行排序 5.根据另一个列表对列表进行排序 6.将列表映射到字典 7.合并两个或多个字典 8.反转字典 9.使用 f 字符串 10.检查子串 11.以字节为单位获取字符串的大小 12.检查文件是否存在 13.解析电子表格 Lists Snippets 我们先从最常用的数据结构列表开始 1.将两个列表合并成一个字典 假设我们在 Python 中有两个列表,我们希望将它们合并为字

随机推荐