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的注入。可是,使用转义之后,就是原文输出,不会被浏览器解析。