3分鐘短文:可能是Laravel模板最直白的用法了,沒有之一

2020-09-25 程式設計師小助手

引言

上一期我們通過分配路由地址,在url中接收位置參數並傳遞給控制器方法, 並且在控制器內簡單地列印輸出接收的參數。

本期我們嘗試著使用laravel的模板功能,把控制器內組裝好的數據渲染到視圖模板文件, 並做展示。

代碼時間

我們把目光還暫時放在控制器的方法內,接著前一章的 EventsController@show 方法。 接收到路由傳遞的 $id 變量後,我們將其附加到視圖渲染函數,並發送到模板文件。

代碼是這樣的:

public function show($id){    return view(&39;)->with(&39;, $id);}

使用 *view** 函數返回 Illuminate\View\View 對象的 with 方法,就可以傳遞數據到模板了。

模板文件的地址在 resources/views/events/show.blade.php,我們追加一行內容:

<p>We&{{ $id }}.</p>

其中 {{ $id }} 就是控制器內傳遞來的變量,模板內使用雙大括號進行包裹,模板最後解析為以下的PHP代碼:

<?php echo $id; ?>

簡單地進行了變量列印輸出。此時瀏覽器內我們仍然訪問這個url地址:

http://example.dev/events/42

正常的情況下輸出內容如下:

see We&42.

說明從路由,到控制器處理,到視圖渲染,都已經正常地工作了。

laravel為什麼說是最優雅的框架呢?因為提供了許多優雅的方法,比如上面控制器方法內, 使用 View 對象的 with 方法,可以傳遞鍵值對,傳遞數組。如果傳遞的是單個變量值, 有一個語法糖可以使用,如下代碼:

public function show($id){    return view(&39;)->withId($id);}

其中 withId 就是與ORM查詢內的 whereId 等等一直,都會解析為 with(&39;, $id) 的樣式, 我們只需按照首字符大寫的駝峰方式書寫即可。

傳遞多個變量

上一節只在視圖渲染的時候,傳遞了一個變量值,而實際業務中,我們不可能把所有的數據,都寫入到同一個變量內, 然後在模板使用單個組裝的變量。

所以我們嘗試同時傳遞多個變量,很容易實現,如果你不厭其煩,多次調用with方法即可:

public function show($id){    return view(&39;)->with(&39;, $id)->with(&39;, &39;);}

在模板內,就可以直接使用 $id$name 兩個變量了:

<p>{{ $name }} has the event ID 39;Head First PHP&39;Y-m-d&39;welcome&39;name&39;date&39;name&39;Head First PHP&39;date&39;Y-m-d&39;events.show&777777; --tt-darkmode-color: #777777;">我是@程式設計師小助手,持續分享編程知識,歡迎關注。

相關焦點

  • 3分鐘短文:Laravel模板也支持一般程式語言的語法結構了
    laravel的模板系統,還提供了很多常用的程式語言的語法結構,其實是PHP的變體, 可以讓編程人員更好地掌控HTML輸出。轉義 or 不轉義首先是單變量的值,我們在控制器內有可能並沒有為該變量賦值,或者並未聲明和傳遞該變量, 在模板內直接引用,會拋出 變量未定義
  • 3分鐘短文:Laravel模板重用,構造你的頁面布局
    而對於模板文件內的HTML內容, 也完全可以如此構造。所以laravel blade模板提供了 layout 布局。在目錄 resources/views/layouts/ 內添加blade模板文件即可。
  • 3分鐘短文 | Laravel blade模板裡優雅地定義PHP變量
    引言laravel秉持MVC的設計理念,在V = view 中放置視圖相關的內容。特別是 blade 模板引擎帶來了很強大的解析方式。在laravel blade 模板裡,你應該使用下面的標籤@php $i = 1 @endphp 這樣把PHP書寫的內容,使用特定的標識符隔開,就達到目的了。當然你還可以使用簡寫:@php ($i = 1) 這與上方的結構塊寫法輸出結果相同。
  • 3分鐘短文:Laravel控制器用法光速入門
    ,讓你明白laravel中控制器是幹什麼的,以及怎麼用。沒有什麼可寫的,我們就寫個 hello world 練練手吧:public function home(){ return 'Hello, World!
  • 3分鐘短文:說說Laravel頁面會話之間的數據保存用法
    引言我們知HTTP請求是沒有狀態的,兩個請求之間沒有直接的關聯關係。但大多數情況下, 我們需要保持用戶的會話間數據的連續性,這時,為了數據安全起見, 有必要在伺服器上臨時存儲一些上下文數據了。代碼時間在laravel中可以使用系統提供的Session類方便地操作會話數據,而且其存儲介質也是抽象出來的, 可以無縫銜接,
  • 3分鐘短文:Laravel Form讓你不再寫HTML的好庫
    laravel作為擴展性極強的框架,自然是為廣大後端開發者賦能。模板 resources/views/events/create.blade.php 代碼如下。Form::select('max_attendees', [2,3,4,5], null, ['placeholder' => 'Maximum Number of Attendees', 'class' => 'form-control input-lg'])!!}
  • 3分鐘短文:說說Laravel頁面會話之間的數據保存Session用法
    引言我們知HTTP請求是沒有狀態的,兩個請求之間沒有直接的關聯關係。但大多數情況下, 我們需要保持用戶的會話間數據的連續性,這時,為了數據安全起見, 有必要在伺服器上臨時存儲一些上下文數據了。這就是 session 設計的目的。
  • 3分鐘短文|Laravel命令行調用控制器方法,你會幾個?
    php index.php --uri=controller/method/var1/var2要知道國內號稱用途最廣的thinkphp都已經這樣用了,laravel可落後乎?當然不可。於是我們想,既然laravel提供了artisan的命令行調用,何不先做一個命令,然後在命令內使用程序方法 調用控制器呢。說來就動手開寫。
  • 3分鐘短文:使用Laravel實現一個最簡單的web靜態頁面
    引言使用laravel實現一個最簡單的動態頁面,牽涉到laravel的路由註冊方式, 控制器書寫方式,以及blade靜態模板的使用。創建laravel應用首先我們通過命令行安裝laravel應用。為了方便創建,先全局安裝 laravel installer, 在命令行中運行下面的指令:composer global require laravel/installer安裝成功後,laravel 二進位文件就會註冊到環境變量,在命令行中查看安裝是否成功
  • 秒懂laravel框架blade模板引擎基礎if_foreach用法及原理
    laravel框架blade模板引擎基礎用法,針對if、while、foreach等相關的php代碼在blade模板中使用方法及邏輯判斷用法。Blade是Laravel提供的一個既簡單又強大的模板引擎,和其他流行的PHP模板引擎不一樣,Blade並不限制你在視圖view中使用原生的PHP代碼,所有的Blade視圖頁面都將被編譯成原生的PHP代碼並緩存起來,除非你的的模板文件修改,否則不會重新編譯.
  • 3分鐘短文:Laravel模型讀數據的那個「障眼法」
    laravel模型的精巧設計使得我們操作數據層邏輯更加得心應手。日期時間格式化先從最常用的地方著手,比如在遷移文件內使用的 timestamps方法,就是在表內生成 created_at和updated_at
  • 3分鐘短文:Laravel ORM 模型用法綱要
    引言前兩期為了說明laravel框架提供的資料庫操作能力,直接使用DB門面操作, 而沒有引入更為強大的eloquent orm功能。從本期開始,我們就分次把 eloquent的一些簡要知識點,為大家提煉演示一下。
  • 3分鐘短文:Laravel ORM 模型用法綱要
    引言 前兩期為了說明laravel框架提供的資料庫操作能力,直接使用DB門面操作, 而沒有引入更為強大的eloquent orm功能。從本期開始,我們就分次把 eloquent的一些簡要知識點,為大家提煉演示一下。主要以代碼為主,配以簡要說明。
  • 3分鐘短文:使用Laravel為靜態頁面加點「料」
    引言上一期我們使用laravel提供的開箱即用的路由,控制器,以及模板功能, 簡單地實現了路由到控制器到模板的分發。不過那都是靜態的網頁, 我們還沒有通過接收用戶輸入,動態地返回不同的數據頁。只有控制器還不夠,我們還沒有告訴用戶應該從哪個路由訪問該方法,所以需要註冊一條路由:Route::get(&39;, &39;);這樣就把相對應的路由地址,分發到對應的控制器方法了。
  • 3分鐘短文:Laravel跟用戶打交道,從拿他們的數據開始
    先說說 $request->all(),這一個是列印所有的輸入數據,比如表單內可能有下面這些欄位。HTML 內容你們將就看一下哈!<form method="post" action="/post-route?
  • 3分鐘短文:素未謀面,Laravel資料庫模型初階入門
    引言沒有模型的框架是沒有靈活的!每個框架都會針對資料庫進行深度設計, 以便快捷地進行SQL的增刪改查,把重複的勞動抽象出來,提高應用開發效率。本期就來講講laravel的模型初階用法。代碼時間模型是在代碼中抽象一層,把資料庫操作提取出來。laravel支持常用的資料庫產品, 我們以MySQL為例。
  • 3分鐘短文:素未謀面,Laravel資料庫模型初階入門
    引言沒有模型的框架是沒有靈活的!每個框架都會針對資料庫進行深度設計, 以便快捷地進行SQL的增刪改查,把重複的勞動抽象出來,提高應用開發效率。本期就來講講laravel的模型初階用法。laravel支持常用的資料庫產品, 我們以MySQL為例。首先在配置文件內,配置參數對資料庫連接。
  • 3分鐘短文:Laravel路由加模型等於?
    引言上一章我們用3分鐘時間光速入門了laravel控制的用法,本章不準備說控制器了,說一說另外倆模塊,就是路由Route和模型Modellaravel為我們準備了更多。隱式綁定首先來看一下默認的隱式路由模型綁定。什麼意思呢?
  • 3分鐘短文:說說Laravel模型關聯關係最單純的「一對一」
    所以,laravel模型提供了關聯關係,本文就來梳理梳理那些用法。Profile.php 文件的內容:namespace App;use Illuminate\Database\Eloquent\Model;class Profile extends Model {}因為使用了 --migration 選項,laravel
  • 3分鐘短文:Laravel模型OR查詢避坑指南
    引言laravel模型提供了query builder對象用於組裝查詢條件並生成PSD查詢語句,從而與資料庫對話。 如果使用and約束條件,這並不難寫,無非是 A 成立且 B 成立且 C 成立,然後返回某某數據。