向视图中传递变量
我们在开发web应⽤当中,通常都不是为了写静态页⾯⽽⽣的,我们需要跟数据打交道,那么这个时候,问题就来了,在⼀个MVC的框架中,怎么将数据传给视图呢?⽐如我们要在 ArticleController 的 index ⽅法的视图输出⼀个 $title 的变量,在Laravel中,有下⾯⼏种常见的⽅法:
使⽤with()⽅法
public function index(){
$title = '⽂章标题1';
return view('articles.lists')->with('title',$title);}
这样的 with('title',$title) 中,第⼀个 'title' 就是key,第⼆个 $title 就是值,这样我们就可以在我们的 articles/lists.blade.php 中输出这个变量了:
刷新我们的 blog.dev ,就可以看到类似这样的页⾯了:image
⽽在blade中,我们可以这样输出变量:
其实在blade引擎中, {{ $title }} 会被解析为类似 这样的输出 ,不过这⾥的 {{ }} 符号会将数据原样输出,⽐如你将 $title 写成这样:
public function index(){
$title = '⽂章标题1'; return view('articles.lists')->with('title',$title);}
这个时候你⽤ {{ $title }} 输出,会看到类似下⾯这样:image
如果你想将 $title 作为页⾯元素渲染输出,你需要这样写:
image
这⾥的 {{ }} 和 {!! !!} 是blade的最基础的⽤法,这两个我们会⽤得特别多,后⾯我会详细说说blade的⽤法。
直接给view()传参数
使⽤这个⽅法的时候,你可以这样写:
public function index(){
$title = '⽂章标题1'; return view('articles.lists',['title'=>$title]);}
刷新页⾯,你依然会看到⼀样的输出。这⾥需要说明⼀下,如果你传多个变量,⽐如:
public function index(){
$title = '⽂章标题1'; $intro = '⽂章⼀的简介';
return view('articles.lists',[ 'title'=>$title,
'introduction'=>$intro ]);}
在传递的数组中:
[
'title'=>$title,
'introduction'=>$intro]
每⼀个key会在视图中作为变量,⽽ value 就作为变量的值。所以在视图中我们需要这样输出:
{{ $introduction }}
这⾥应写成 {{ $introduction }} ,⽽不是 {{ $intro }} 。
使⽤compact
使⽤compact是这样写的:
public function index(){
$title = '⽂章标题1'; $intro = '⽂章⼀的简介';
return view('articles.lists',compact('title','intro'));}
compact() 的字符串可以就是变量的名字,多个变量名⽤逗号隔开。这个时候注意更改视图的变量输出。
以上就是Laravel中常⽤的⼏种向视图传递变量的⽅法。
因篇幅问题不能全部显示,请点此查看更多更全内容