[筆記]laravel 建立第一個頁面 01

changken我個人為甚麼喜歡使用php框架,就是因為框架可以把平常的工作簡化再簡化,也可以把一些程式碼分離來達到分工的概念,以changken先前的幾個專案來講,都習慣把php及html寫在一起,甚至連sql也寫在一起,假設未來我想要把資料庫改成sqlite還mssql之類的話(雖然使用pdo就可以解決問題)、還是想要改layout之類的,由於全部都寫在一起,幾乎是整個專案都要改(每一份php網頁、很痛苦、也很傷眼),但在使用框架之後,一切都可以變得很簡單,我只要簡單寫幾句程式碼就可以達到平常我寫十幾行的效果(感覺是我在推人入坑XD)。

想當然爾,我們第一次寫程式就是要先顯示hello world才能展開新旅程!

所以,我們要先打開「routes/web.php」這個檔案,你會先看到以下的程式碼(註解省略之):


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

等等,這是啥呀?為什麼我都看不懂???

不用擔心!我來打個比方,路由就好像是一個網址分配器的概念,透過路由來達成頁面顯示等等等,可能是傳統的php網頁並沒有這個概念,所以會比較難以理解。

所以我就在其下方添加:


Route::get('/hello-world', function () {
    return 'hello world!';
});

寫好後,我們就可以進入以下網址:「http://localhost/test/public/hello-world」,它就會顯示:

hello world!

為什麼為我要特別標註「public」這個資料夾呢?

那是因為laravel不希望一般的使用者看到框架的「核心」,因而來增加安全性,所以我們可以把網站根目錄指到「public」資料夾。

那麼網址就會變成「http://localhost/hello-world」。

那如果我要在網址中帶入參數的話,那要怎麼辦呢?

不用擔心,只需要把以上的程式碼改成:


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

你只要在網址列輸入 http://localhost/test/public/hello-world/bababa,它就會顯示:

 hello world! bababa

但是如果你沒有輸入的話就會跳出很醜的例外錯誤頁面。

所以我們就把原本的程式碼改一下:


Route::get('/hello-world/{name?}', function ($name = 'test') {
    return 'hello world!' . $name;
});

這樣就不用一定要給 $name 變數值了!

不過你不會有疑問嗎?直接把所有的程式碼寫在route裡好嗎?所以我們就要輸入指令產生一個controller!

php artisan make:controller TestController

就可以在「app/Http/Controllers」資料夾中找到「TestController.php」把它打開!
在TestController class中加入

public function index()
{
    return view('welcome');
}

在「routes/web.php」中把原先的:

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

改成:

Route::get('/', 'TestController@index');

你會發現….沒變!

但此時laravel的http請求就有經過TestController囉!

如此這般就可以達到各自分工的完美節奏!(出問題會比較好除錯)

今天筆記就先到這邊囉,如有錯誤的話,麻煩請各位大大在下方留言,小弟會及時修改~~~