上一期我們通過分配路由地址,在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;">我是@程式設計師小助手,持續分享編程知識,歡迎關注。