首頁>技術>

引言

Laravel秉持MVC的設計理念,在V = view 中放置檢視相關的內容。特別是 blade 模板引擎帶來了很強大的解析方式。

與傳統的PHP與HTML寫作一團方式不容,Blade 使用特定的語法結構,將變數資料渲染到檢視內。

那麼如何優雅地在檢視檔案裡定義一個PHP變數呢?

學習時間

比如宣告一個變數,你完全可以混雜PHP標籤的內容:

<?php $old_section = "whatever"; ?>

這非常不優雅,不是嗎?但是,像下面這樣:

{{ $old_section = "whatever" }}

會直接輸出變數值。這不是想要的結果。在laravel blade 模板裡,你應該使用下面的標籤

@php $i = 1 @endphp

這樣把PHP書寫的內容,使用特定的識別符號隔開,就達到目的了。當然你還可以使用簡寫:

@php ($i = 1)

這與上方的結構塊寫法輸出結果相同。

換一種思路,如果版本較早,不能支援php結構塊,我們可以使用 if 語句塊實現,在條件語句內使用賦值寫法。如下:

@if ($variable = 'any data, be it string, variable or OOP') @endif

注意在判斷語句內,使用了賦值語句,那麼變數 $variable 就被宣告且可外部訪問了。

這也是曲線救國的一種方式吧。

困難的辦法

laravel系統提供了模板的擴充套件使用系統不具備的標籤。我們使用 ServiceProvider 註冊一個先的 BaldeServiceProvider,在其中新增 Blade 模板的擴充套件方法。

首先建立檔案

app/Providers/BladeServiceProvider.php

然後新增下面的程式碼:

我們使用自定義的標籤 define 用於宣告變數,使用 preg_replace 函式將其替換為 php 寫法的字串。

然後在 config/app.php 檔案內載入此 ServiceProvider 檔案:

最後需要手動清理已經生成的巨大的 compile 檔案:

php artisan clear-compiled

這樣就可以在程式裡使用自定義的blade擴充套件標籤了。

寫在最後

本文提供了3種方法用於在laravel模板檔案內定義全域性變數。我們強烈推薦第三種,使用“服務提供者”載入 Blade::extend 的載入規則。這很符合laravel的程式設計風格。

Happy coding :-)

193

PHP

HTML

最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • React實戰001:快速搭建React專案