繼續昨天
Route::get('/hello/{name}', function ($name) {
return '<h1>Hello, '.$name.'</h1>';
});
透過路徑接受了參數傳了進來,再加以加工輸出回去。不過這麼寫不怎麼美觀,
因為這違反了 「 只做一件事情 」的原則,不但處理了路由請求,還傳遞參數並渲染頁面。
今天透過模板系統,要來把路由請求處理與頁面設計分離。
首先,把上面程式修改為以下內容
Route::get('/hello/{name}', function ($name) {
return view("hello-name", [
"name" => $name,
]);
});
接著在新增一個模板檔案resources/views/hello-name.blade.php
<h1>Hello, {{$name}}</h1>
然後瀏覽http://localhost/hello/Daniel 看看,應該與之前畫面並無差異。
透過上面簡短範例,可以了解到view()
可以渲染blade模板,並且接受而外一個字典(dict)傳遞變數進模板選染。
至於模板儲存在resources/views/
目錄底下,.blade.php
被視為副檔名,指定時只需要指定模板名稱即可,無須包含副檔名。
在模板之中,可以透過{{$variable}}
的方式替換成傳入的變數,或是函式{{phpinfo()}}
。
blade模板中,也可以像過往以樣直接寫PHP程式,不過不在是用<?php ?>
包起來,而是改用@php @endphp
@php
phpinfo();
@endphp
本文同步發表於隨性筆記