我們在開發web應用程式當中,通常都不是為了寫靜態頁面而生的,我們需要跟資料打交道,那麼這個時候,問題就來了,在一個MVC的框架中,怎麼將資料傳給視圖呢?例如我們要在ArticleController 的index 方法的視圖輸出一個$title 的變量,在Laravel中,有下面幾種常見的方法:
使用with()方法
public function index() { $title = '文章标题1'; return view('articles.lists')->with('title',$title); }
這樣的with ('title',
title 就是值,這樣我們就可以在我們的articles/lists.blade.php 中輸出這個變數了:
<body><h1><?php echo $title; ?></h1></body>
刷新我們的blog.dev ,就可以看到類似這樣的頁面了:
而在blade引擎中,我們可以這樣輸出變數:
<body><h1>{{ $title }}</h1></body>
其實在blade引擎中, {{ title }} 會被解析為類似 這樣的輸出 a080aaa5757b6aff87eff531122a51a8 ,不過這裡的{{ }} 符號會將資料原樣輸出,例如你將$title 寫成這樣:
public function index() { $title = '<span style="color: red">文章</span>标题1'; return view('articles.lists')->with('title',$title); }
這時候你用{{ $title }} 輸出,會看到類似下面這樣:
如果你想將$title 作為頁面元素渲染輸出,你需要這樣寫:
<h1>{!! $title !!}</h1>
這裡的{{ }} 和{!! !!} 是blade的最基礎的用法,這兩個我們會用得特別多,後面我會詳細說說blade的用法。
使用這個方法的時候,你可以這樣寫:public function index() { $title = '<span style="color: red">文章</span>标题1'; return view('articles.lists',['title'=>$title]); }
public function index() { $title = '<span style="color: red">文章</span>标题1'; $intro = '文章一的简介'; return view('articles.lists',[ 'title'=>$title, 'introduction'=>$intro ]); }在傳遞的數組中:
['title'=>$title,'introduction'=>$intro]每一個key會在視圖中作為變量,而value 就作為變量的值。 #這裡要寫成{{
introduction }} ,而不是 {{ intro }} 。 使用compact 使用compact是這樣寫的:
<h1>{!! $title !!}</h1>{{ $introduction }}
compact() 的字串可以就是變數的名字,多個變數名稱用逗號隔開。這時候注意更改視圖的變數輸出。第三種。
相關建議:
以上是laravel如何向視圖傳遞變數的詳細內容。更多資訊請關注PHP中文網其他相關文章!