當構建動態元件或頁面時,可能會根據不同的需求顯示自定義模板(如果存在)或以其他方式返回預設模板。
例如,假設我們正在構建一個頁面模組,有一些頁面如「關於我們」或「聯絡我們」,需要一個自定義模板(例如顯示圖片或聯絡人表單),而其他頁面類似「服務條款」 則是需要預設的檢視模板。
通常,我們會透過一系列條件判斷來解決這個問題,或者透過使用 view()->exists()
來檢查自定義模板是否存在。而現在,Laravel 5.5 給了我們一個更好、更優雅的方式來解決這個問題。(以下內容你也可以透過 影片 瞭解到)
使用 View::first
如果使用 view()->exists()
方法,你的程式碼可能要這樣寫:
if (view()->exists('custom-template')) {
return view('custom-template', $data);
}
return view('default-template', $data);
現在我們換成更簡單、更具可讀性的 View::first
方法:
return view()->first(
['custom-template', 'default-template'], $data
);
在上面的方法中,你必須傳遞一個模板陣列作為第一個引數,該方法會載入它找到的陣列中的第一個模板。
你可以傳遞大量模板,甚至使用動態名稱:
return view()->first([
"pages/{$page->slug}",
"pages/category-{$page->category->slug}",
"pages/default-template"
], $data);
你也可以使用這個功能的 Facade :
\View::first($templates, $data)
這種動態檢視載入功能已經被新增到 Laravel v5.5 中的 Blade 模版中,讓處理動態模板的程式碼更優雅。
本作品採用《CC 協議》,轉載必須註明作者和本文連結