Laravel Blade 動態模版 & View::first

JokerLinly發表於2017-09-14

file

當構建動態元件或頁面時,可能會根據不同的需求顯示自定義模板(如果存在)或以其他方式返回預設模板。

例如,假設我們正在構建一個頁面模組,有一些頁面如「關於我們」或「聯絡我們」,需要一個自定義模板(例如顯示圖片或聯絡人表單),而其他頁面類似「服務條款」 則是需要預設的檢視模板。

通常,我們會通過一系列條件判斷來解決這個問題,或者通過使用 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 模版中,讓處理動態模板的程式碼更優雅。

本文翻譯自:https://laravel-news.com/viewfirst

Stay Hungry, Stay Foolish.

相關文章