1. 程式人生 > >laravel向檢視傳遞變數

laravel向檢視傳遞變數

向檢視中傳遞變數
我們在開發web應用當中,通常都不是為了寫靜態頁面而生的,我們需要跟資料打交道,那麼這個時候,問題就來了,在一個MVC的框架中,怎麼將資料傳給檢視呢?比如我們要在 ArticleController 的 index 方法的檢視輸出一個 $title 的變數,在Laravel中,有下面幾種常見的方法:

使用with()方法

public function index()
{
$title = '文章標題1';
return view('articles.lists')->with('title',$title);
}
1
2
3
4
5
這樣的 with(‘title’,title)中,第一個′title′就是key,第二個title)中,第一個′title′就是key,第二個title 就是值,這樣我們就可以在我們的 articles/lists.blade.php 中輸出這個變量了:

<body>
<h1><?php echo $title; ?></h1>

</body>
1
2
3
4
重新整理我們的 blog.dev ,就可以看到類似這樣的頁面了:

而在blade引擎中,我們可以這樣輸出變數:

<body>
<h1>{{ $title }}</h1>

</body>
1
2
3
4
其實在blade引擎中, {{ title }} 會被解析為類似 這樣的輸出 <?php echotitle }} 會被解析為類似 這樣的輸出 <?php echotitle; ?> ,不過這裡的 {{ }} 符號會將資料原樣輸出,比如你將 $title 寫成這樣:

public function index()
{
$title = '<span style="color: red">文章</span>標題1';
return view('articles.lists')->with('title',$title);
}
1
2
3
4
5
這個時候你用 {{ $title }} 輸出,會看到類似下面這樣:

如果你想將 $title 作為頁面元素渲染輸出,你需要這樣寫:

<h1>{!! $title !!}</h1>
1
這裡的 {{ }} 和 {!! !!} 是blade的最基礎的用法,這兩個我們會用得特別多,後面我會詳細說說blade的用法。

直接給view()傳引數
使用這個方法的時候,你可以這樣寫:

public function index()
{
$title = '<span style="color: red">文章</span>標題1';
return view('articles.lists',['title'=>$title]);
}
1
2
3
4
5
重新整理頁面,你依然會看到一樣的輸出。這裡需要說明一下,如果你傳多個變數,比如:

public function index()
{
$title = '<span style="color: red">文章</span>標題1';
$intro = '文章一的簡介';
return view('articles.lists',[
'title'=>$title,
'introduction'=>$intro
]);
}
1
2
3
4
5
6
7
8
9
在傳遞的陣列中:

[
'title'=>$title,
'introduction'=>$intro
]
1
2
3
4
每一個key會在檢視中作為變數,而 value 就作為變數的值。所以在檢視中我們需要這樣輸出:

<body>
<h1>{!! $title !!}</h1>
<p>{{ $introduction }}</p>
</body>
1
2
3
4
這裡應寫成 {{ introduction }} ,而不是 {{introduction }} ,而不是 {{intro }} 。

使用compact
使用compact是這樣寫的:

public function index()
{
$title = '<span style="color: red">文章</span>標題1';
$intro = '文章一的簡介';
return view('articles.lists',compact('title','intro'));
}
1
2
3
4
5
6
compact() 的字串可以就是變數的名字,多個變數名用逗號隔開。這個時候注意更改檢視的變數輸出。

以上就是Laravel中常用的幾種向檢視傳遞變數的方法,選擇一種你喜歡的方式並堅持這一種寫法就可以了
原文:https://blog.csdn.net/weixin_38112233/article/details/79244513