清明連假開始了,在上上禮拜提前掃墓了,為了避免車潮,所以我們家都會提早掃,所以連假會有比較空閒的時間去研究一些技術的東西,看來前言廢話太多,進入正題吧。這章節要介紹MVC架構裡面的View,這章其實有點像是延續上篇的Route(路由),因為其實每一章節都是有相關的,只是需要先稍微做個介紹,才能一直往更複雜的做延伸介紹。

檢視(View)

View的意思就是呈現我們所看到的HTML靜態畫面,也可以稱之為前端,但如果搭配Route(路由)、Controller(控制器)、Model(模組)就可以呈現動態的一面。

Laravel專案中View位於 resources/views/,在每一個View的命名,一定要加上blade,laravel在執行上才會讀到xxx.blade.php的View。

1、製作第一個View

View

resources/views/ 建立 test.blade.php 檔案

1
2
3
4
5
6
7
8
9
10
11
<!DOCTYPE html>
<html lang="zh-Hunt-Tw">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Laravel 專案練習</title>
</head>
<body>
<h1>大家好</h1>
</body>
</html>

Route

在route對應到view的某一個檔案,可以省略blade.php。

設定網址 routes/web.php ,新增一組route

1
2
3
Route::get('test/', function () {
return view('test');
});

Terminal

在專案book檔案下輸入執行

1
php artisan serve

結果

瀏覽器輸入 http://127.0.0.1:8000/test

是不是很簡單呢?


2.延伸上面View(參數傳值)

在路由裡宣告一段變數,將值傳到View頁面

Route

1
2
3
4
5
6
7
8
9
Route::get('test/', function () {
$data = array('about' => '關於我們',
'news' => '最新消息',
'book' => '書籍庫',
'ebook' => '電子書',
'contact' => '聯絡我們'
);
return view('test',$data);
});

View

延伸上一個View test.blade.php 檔案

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<!DOCTYPE html>
<html lang="zh-Hunt-Tw">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Laravel 專案練習</title>
</head>
<body>
<h1>大家好</h1>
<ul>
<li><?php echo $about; ?></li>
<li><?php echo $news; ?></li>
<li><?php echo $book; ?></li>
<li><?php echo $ebook; ?></li>
<li><?php echo $contact; ?></li>
</ul>
</body>
</html>

OR

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<!DOCTYPE html>
<html lang="zh-Hunt-Tw">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Laravel 專案練習</title>
</head>
<body>
<h1>大家好</h1>
<ul>
<li>{{ $about }}</li>
<li>{{ $news }}</li>
<li>{{ $book }}</li>
<li>{{ $ebook }}</li>
<li>{{ $contact }}</li>
</ul>
</body>
</html>

結果

3.延伸第1點的View(加入CSS及JS)

在專案中,我們在專案中的 public 資料夾裡,建立assets資料夾,裝放JS及CSS等套件。
jQuery官網
twitter - Bootstrap

先安裝以上套件

View

延伸上一個View test.blade.php 檔案,加入jQuery、Bootstrap
※ 引入的JS檔案 加上defer,等頁面載入完畢才會做執行。
參考文章 [HTML5] script 的新增屬性 defer, async

1
2
3
4
5
{{-- JQuery 3.4.1 --}}
<script src="/assets/js/jquery-3.4.1.min.js" defer></script>
{{-- Bootstrap 4.4.1 --}}
<script src="/assets/js/bootstrap-4.4.1-dist/bootstrap.min.js" defer></script>
<link rel="stylesheet" href="/assets/css/bootstrap-4.4.1-dist/bootstrap.min.css">

完整頁面

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<!DOCTYPE html>
<html lang="zh-Hunt-Tw">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Laravel 專案練習</title>
{{-- JQuery 3.4.1 --}}
<script src="/assets/js/jquery-3.4.1.min.js" defer></script>
{{-- Bootstrap 4.4.1 --}}
<script src="/assets/js/bootstrap-4.4.1-dist/bootstrap.min.js" defer></script>
<link rel="stylesheet" href="/assets/css/bootstrap-4.4.1-dist/bootstrap.min.css">
</head>
<body>
<div class="container">
<h1>大家好</h1>
<ul>
<li>{{ $about }}</li>
<li>{{ $news }}</li>
<li>{{ $book }}</li>
<li>{{ $ebook }}</li>
<li>{{ $contact }}</li>
</ul>
</div>

</body>
</html>

Terminal

在專案下輸入執行

1
php artisan serve

結果

瀏覽器輸入 http://127.0.0.1:8000/test ,在頁面下右鍵檢視原始碼,點連結代表有成功載入。

標籤: w3HexSchool PHP Laravel