3分钟短文:Laravel模板,也支持一般编程语言的语法结构了

简介: 常量变量运算符,循环判断函数

引言

从控制器内组装好的数据渲染到视图文件,上一章我们演示了简单的单变量数值访问。
laravel的模板系统,还提供了很多常用的编程语言的语法结构,其实是PHP的变体,
可以让编程人员更好地掌控HTML输出。

图片

本期就来说说模板内的程序结构的高阶用法。

转义 or 不转义

首先是单变量的值,我们在控制器内有可能并没有为该变量赋值,或者并未声明和传递该变量,
在模板内直接引用,会抛出 变量未定义 的异常,造成无法渲染。

laravel给了一个简洁的判空的方式,就是 or 语法,很直观,代码用起来如下:

Welcome, {{ $name or 'Laravel Member' }}!

我们上一章介绍过,使用双大括号会在模板解析的时候,生成下面的PHP代码:

<?php echo $variable; ?>

这对常规变量无害,可是对于非法的操作,比如是用户输入的内容,直接展示的话,有可能造成文件和数据库等等的风险,
所以对变量要做一次转义,将其内容原封不动地用字符串的方式展现出来,这样做其实非常有必要。

对变量结果进行转义,使用如下的语法:

{!! 'My list <script>alert("spam spam spam!")</script>' !!}

大家看到了,如果上面的内容直接输出到HTML,就会触发js的注入。可是,使用转义之后,就是原文输出,不会被浏览器解析。

循环结构

通常动态数据由数组方式构成,我们不可能在模板内一个一个地书写,那样就造成了重复劳动。
模板内要是有循环判断结构,效果就好多了,写一次,无论来多少数据,都只需写一次结构。

laravel模板是支持循环结构的,我们下面演示一下。首先从路由的声明开始:

Route::get('events', 'EventsController@index');

然后在控制器内实现该方法:

pic

我们组装了一个字符串数组,并且发送到视图。在视图内使用循环结构将 $events 的值遍历输出。
模板内代码如下:

pic

访问该路由地址之后,生成的HTML页面内容如下:

pic

当然了,对于数组我们免不了使用判空的条件,模板语法如下:

pic

判断条件

有了循环结构,判断条件也不能少。特别是类似RBAC的权限访问控制,那些用户对于哪些菜单,
哪些路由地址,拥有权限;而哪些用户没有,这就需要if条件判断。

我们对上一节的示例代码添加条件判断,如果数组 $events 的元素内含有 Laravel 字符,
则追加输出 (sweet framework)

直接上代码:

pic

注意模板内使用 @if ... @endif 包裹判断条件主体内容。在浏览器内访问路由,可以看到输出的HTML内容如下:

pic

对于多层嵌套的 if ... elseif ... else 这样的语法,模板也是支持的,所能形成的判断逻辑也更为复杂,
上述代码我们再加点“料”:

pic

执行结束后生成的HTML内容如下:

pic

写在最后

本文我们介绍了MVC模式中的V部分,在视图内使用了简单的条件判断和循环语法。
在业务代码中,哪些逻辑放在C内完成,哪些放在V内完成,需要我们灵活使用。
总而言之一个宗旨,V视图内不能放太多逻辑代码。

Happy coding :-)

我是@程序员小助手,专注编程知识,圈子动态的IT领域原创作者

相关文章
|
9月前
|
C语言
C 语言函数:入门指南
一个函数包括两个部分: 声明:函数名称、返回类型和参数(如果有) 定义:函数体(要执行的代码)
127 2
|
C++
C++语言学习基本语法应用案例
C++语言学习基本语法应用案例
74 0
|
3月前
|
存储 安全 数据挖掘
《C 语言字符串处理:从基础操作到高级应用》
《C 语言字符串处理:从基础操作到高级应用》全面介绍了C语言中字符串的处理方法,从基本概念、常见操作到复杂应用,适合初学者及有经验的开发者参考学习。本书通过丰富实例讲解,帮助读者掌握字符串处理技巧。
|
6月前
|
开发者 Ruby
Ruby正则表达式的奥秘:如何用简单的语法构建强大的文本匹配与处理工具?
【8月更文挑战第31天】正则表达式是文本匹配的强大工具,通过简单模式即可实现复杂文本处理。作为动态、面向对象的语言,Ruby提供了全面的正则表达式支持,涵盖创建、匹配、替换及分割等功能。本文通过示例代码介绍如何在Ruby中使用正则表达式进行文本匹配,并分享了编写正则表达式的最佳实践,帮助开发者提升文本处理效率与准确性,更好地利用这一工具构建高效系统。
46 0
|
8月前
|
Rust
Rust的if let语法:更简洁的模式匹配
Rust的if let语法:更简洁的模式匹配
|
9月前
|
程序员 C++
C++语言模板学习应用案例
C++模板实现通用代码,以适应多种数据类型。示例展示了一个计算两数之和的模板函数`add&lt;T&gt;`,可处理整数和浮点数。在`main`函数中,展示了对`add`模板的调用,分别计算整数和浮点数的和,输出结果。
60 2
|
9月前
|
Swift
Swift语言的语法
Swift语言的语法
74 2
|
Python
Python编程语言基础_语法入门——文本和字符集
Python编程语言基础_语法入门——文本和字符集
100 0
Python编程语言基础_语法入门——文本和字符集
|
Python
python编程:Django常用的模板语言标签
python编程:Django常用的模板语言标签
158 0
python编程:Django常用的模板语言标签
Markdown 额外语法支持-印象笔记
下划线 <u>支持下滑线了</u> 添加待办事项 语法示例: 三只青蛙 * [x] 第一只青蛙 * [ ] 第二只青蛙 * [ ] 第三只青蛙 插入表格 语法示例: | 帐户类型 | 免费帐户 | 标准帐户 | 高级帐户 | | --- | --- | --- | --- | | 帐户流量 | 60M | 1GB | 10GB | | 设备数目 | 2台 | 无限制 | 无限制 | | 当前价格 | 免费 | ¥8.17/月 | ¥12.33/月| 插入图表 目前支持饼状图、折线图、柱状图和条形图,只需将 type 改为对应的pie、line、column 和 bar。 ,预算,收
194 0
Markdown 额外语法支持-印象笔记

热门文章

最新文章