联系QQ 284710375
首页 > 技术分享 > Laravel
收藏

laravel框架的blade模板引擎基础用法2020-06-25 21:33:29

大潇博客 原创文章,转载请标明出处

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



从控制器到模板传参,有两种方法,一种是在加载模板的“view()”方法中传参,另一种是通过框架的“with()”函数传参,如:

public function index(){

$title = "我是标题";

$data = array(

      'name'=>'姓名',

      'age'=>'年龄'

);

return view('home/index', $data)->with("title",$title);

}

with()函数中只能传一个参数,上面的参数在模板中调用的格式分别为:

{{$title}}

{{$name}}

{{$age}}

用两个大括号包起来,即表示输出,因为blade模板文件.php后缀,所以也可以用原生php直接输出。



当然也可以用PHP的compact函数,把变量和数组混合到一起传参,如:

public function home(){

$title = "标题";

$data = array(

      'name'=>'姓名',

      'age'=>'年龄'

);

return view('home.home', compact('title', 'data'));

}

输出方法和上文提到的一样,不过这里由于$data是一个数组,所以要用数组方式输出,上面定义的参数分别为:

{{$title}}

{{$data['name']}}

{{$data['age']}}



若我们在PHP中定义了js代码,想要在blade模板中输出js脚本,如:

public function test(){

$script = "<'script>document.write('我是js代码')";

$title = "标题";

$name = null;

return view('home/test', compact('name', 'script'))->with("title", $title);

}

上面代码中的变量输出,不用再多说,如title为:

{{$title}}

不过在前端框架argular.js中,变量输出方法和laravel的blade模板引擎输出方法一样,为了避免这种冲突,larave提供了解决方法,在输出变量前加入@符,如:

@{{$title}}

这样可以连带大括号全部输出。


在后端定义了js代码后,laravel模板不会正常输出,它为防止执行恶意脚本,会把script的尖括号转换掉,这样在html页面中会直接显示javascript代码,若我们想执行js代码,格式为:

{!!$script!!}



若想判断变量是否定义或者为空,可以用模板提供的“or”或通过三元运算符进行判断,在laravel模板引擎中这样写:

“{{$name or 'name没有定义或为空'}}”

“{{isset($name) ? $name : '三元运算符'}}”


上文提到的整合为下图:

larave模板.png



laravel模板引擎中“if”判断写法:

@if($score>60)

及格

@else

不及格

@endif



laravel模板引擎中“unless”判断写法:

@unless($score>60)

unless语法:不及格

@endunless

#除非大于60,否则都是不及格,输出相反的,注意结果会取反



laravel模板引擎中“for”循环写法:

@for($i=0;$i<=$num;$i++)

{{$i}}

@endfor



laravel模板引擎中“foreach”循环写法:

@foreach($article as $key => $val)

{{$key}}=>{{$val}}

@endforeach



laravel模板引擎中“forelse”循环写法:

forelse类似foreach,可以循环数组,但forelse要加一个@empty,判断该数组是否为空,若为空输出@empty后面的内容,需要注意的是若没有定义数组,使用forelse会报错

forelse比foreach功能多且好用,推荐项目中尽量多用

@forelse($null as $val)

{{$val}}

@empty

没有数据

@endforelse



laravel模板引擎中“while”循环写法:

@while ($num > 5)

大于5

@endwhile


打赏

阅读排行

大家都在搜

博客维护不易,感谢你的肯定
扫码打赏,建议金额1-10元
  • 15601023311