[Laravel] 傳值給view,並使用 blade 模板顯示

上次我們弄了靜態頁面,也連上資料庫了
雖然現在還沒有資料
但是如果拿到資料我們要做什麼呢?


所以我們先假設已經取得到資料
我們有三種方式把資料傳遞到 view




先打開上次的
\helloLaravel\routes\web.php
這就是MVC的 controller

Route::get('about', function () { 
    return view('about',['github' => 'ray247k', 'project'=> 'helloLaravel'])
    ->with('skill', ['PHP', 'docker', 'nginx']);
});

我們這邊用了兩個方法
一個是在當初 return view 的時候,第一個變數是指定view檔案
第二個選填的參數可以作為傳給 view 的變數
然後我們就可以在 view 裡面呼叫該變數!

第二個方法則是使用 with 前面的是 key,後面是 value
可以在 wiith 後面再 with 再 with

第三種方式在 Laravel 專案中比較常見,因為擴充性較佳
使用PHP內建的 compact() 函式,可以把幾個變數組成陣列回傳

$data = ['name' => 'ray','age' => 25];
$title = '自我介紹';
return view('about', compact('data', 'title'));


如此我們的 view 就可以使用剛剛的變數
而Laravel的 view 使用自己的 blade 模板,其中可以像原生一樣使用 PHP 語法
同時也有些便捷的用法

例如
<?php 
    foreach ($skill as $skill)
    {
        echo "<p>" . $skill . "</p>"
    }
?>

可以寫成

@foreach($skill as $skill)
    <p>{{ $skill }}</p>

@endforeach

@ 代替 php tag 並且用 {{}}  取代攏長的 echo
以上就是從 controller 傳送資料到 view 並且使用的方法


留言