控制器需向視圖傳遞多個變量,Laravel 提供多種語法糖,本文對比三種常用方式。
public function about() {
return view('pages.about')->with([
'first' => 'Zhang',
'last' => 'Jinglin',
]);
}
public function about() {
$data = [];
$data['first'] = 'Zhang';
$data['last'] = 'Jinglin';
return view('pages.about', $data);
}
public function about() {
$first = 'Zhang';
$last = 'Jinglin';
return view('pages.about', compact('first', 'last'));
}
| 方式 | 優點 | 缺點 | 適用場景 |
|---|---|---|---|
| with(陣列) | 鏈式調用、可讀性好 | 鍵值重複寫變量名 | 少量變量、鏈式風格 |
| 陣列變量 | 靈活、可動態構建 | 代碼較冗長 | 動態鍵名、條件性賦值 |
| compact() | 最簡潔、變量名即鍵名 | 變量必須預先定義 | 固定變量集、日常開發首選 |
view() 返回 Illuminate\View\View 實例。with() 內部調用 $this->data = array_merge($this->data, $data)。compact() 是 PHP 內置函數:['first' => $first, 'last' => $last]。// ServiceProvider boot()
View::share('site_name', 'My Blog'); // 所有視圖可用 $site_name
// 或佈局文件直接使用
<title>{{ config('app.name') }}</title>
日常開發 推薦 compact(),代碼最乾淨;需動態構建鍵值對時用陣列;鏈式風格偏好者用 with()。三者最終效果一致,視圖中均以 $first/$last 直接訪問。