iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 4
2
Modern Web

讓PHP再次偉大,使用Laravel系列 第 4

Laravel Route(路由)

  • 分享至 

  • xImage
  •  

前一天我們稍微簡介一下資料夾的結構,談到 routes 這個資料夾放置所有和路由相關的檔案。打開 routes 資料夾,我們看到四個檔案

  1. api.php :在做前後端分離專案的時候,我們會用到這個檔案
  2. channels.php:和 Broadcast 有關係,這是 laravel 的功能,我自己也很少用過。期待未來在寫這個系列的時候一起來學習。
  3. console.php:和指令有關係,我們會常常打 php artisan xxx ,這個檔案就是和這個部分有關係。
  4. web.php:就是我們在瀏覽器打上的 url,後面那個 domain name 之後接下的字串,在這個檔案我們可以定義哪些字串要導向到哪個流程與檔案之類的

web.php

讓我們可以先玩一下 web.php
看到 laravel 為我們預設了一段

Route::get('/', function () {
    return view('welcome');
});

讓我們按照 code 說一下故事:就是有一個 Route 的類別,他可以有一個 Get 的方法,'/'的意思就是不加任何東西,而 function 這一段就是指示當我們到/的時候應該要怎麼做,這個預設範例就是說我們可以 return view('welcome') ,view()這個方法指向 resource 底下的 views 資料夾底下,傳入的字串是前綴詞,因此,他會把 welcome.blade.php 這個檔案傳給瀏覽器讀取。就是我們看到的那樣囉

所以,我們可以如法炮製在 web.php 寫一個

Route::get('hello', function () {
    return 'Hello World';
});

然後在你的網址後面加入個/hello,就會看到 Hello World 的字串囉

或許你會問到,我希望傳一些資料給 Laravel 可不可以,當然啦 當然可以囉,就像底下這樣寫

Route::get('/hello/{name}', function ($name) {
    return 'Hello ' . $name;
});

神奇吧,在你的{}裡面填入你的名稱,記得後面的 function 也要帶上參數,你就可以帶資料進去了喔!

關於 Route 的部分你可以更多深入參考文件
https://laravel.com/docs/6.x/routing#route-parameters

之後我會講到 RESTFul API 的部分,到那個時候我會在更多的說明有關於這個部分.....

api.php

api.php 你發現預設的也是 Route 嗎?

Route::middleware('auth:api')->get('/user', function (Request $request) {
    return $request->user();
});

middleware 就是一種過濾、防火牆的概念,這個我們之後會再說明,在這裡你可以不用太多著墨,如同剛剛我們可以如法炮製寫一個小範例,如下

Route::get('/hello', function () {
    return 'Hello World';
})

api.php 的方式很簡單,就是在指定的字串前面多加一個 api 就好,
如範例就會像是這樣的 url : {domain}/api/hello
就會像第一個舉例回傳 hello world 的字樣囉

console.php

我們看到 Laravel 幫我們寫道的預設是

Artisan::command('inspire', function () {
    $this->comment(Inspiring::quote());
})->describe('Display an inspiring quote');

那麼讓我們在終端機並且移到這個資料夾目錄下使用

$ php artisan inspire

你就看到一句令人激勵的名言,有沒有覺得備感激勵呢?!

然後你可以在下一個指令,在我們剛剛的指令加入 -help

$ php artisan inspire -help

有沒有發現後面 describe 裡面的字串出現在 description 裡面了呢~
好了別光說不練,讓我們也像之前一樣如法炮製一番
加入這段

Artisan::command('helloworld', function () {
    $this->comment('Hello World');
})->describe('Display Hello World');

然後存檔後執行

$ php artisan helloworld

然後你就看到Hello World的字樣囉,關於 command 的部分我們之後會再更多的說明囉~

channels.php

這個和 Broadcast 有關係,這個以後我們和 Broadcast 之後再一起討論吧,絕對不是說我沒寫過所以沒把握來寫哈哈

Artisan 相關指令

之後我們會常常使用到 command line 來產生檔案,這也是 laravel 讓人覺得很方便的地方,可以幫我們把一些檔案製造出來讓我們可以自由發揮,因此之後我會全部整理在這裡讓大家參考,如果之後有遺漏的可以在底下留言或者以後我也會自行補充修改:

關於 route 的指令如下,如果有遺漏我會在補充

1. php artisan route:list //列出目前所有的路由url~

程式碼的部分你可以參考這裏:https://github.com/r567tw/Make-PHP-Great-Again/commit/83e076b690e938d549c29851bd37f8be9423fe3e


上一篇
Laravel 導覽與生命週期
下一篇
Laravel Database: Migration and Seeder
系列文
讓PHP再次偉大,使用Laravel30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 則留言

0
bluegreenking2
iT邦新手 5 級 ‧ 2020-04-22 23:12:02

謝謝大大分享,目前覺得console.php是比較難理解的!middleware之前寫過不過驚訝api.php那邊可以那樣玩,之前怕壞掉所以都不太敢動laravel設計好的部分只會依樣打code!

1
johnqq
iT邦新手 5 級 ‧ 2021-01-06 10:19:13

勘誤
web.php

Route::get('hello', function () {
    return 'Hello World';    \\ <==結尾少了分號就會發生錯誤
});

api.php

Route::get('/hello', function () {  \\<===function小括號內多了$name就會發生錯誤
    return 'Hello World';
});
r567tw iT邦研究生 5 級 ‧ 2021-01-06 21:09:26 檢舉

感謝, 已修正!

我要留言

立即登入留言