[Day 14] Laravel的路由(Route)與控制器(Controller)(二)

Laravel的路由(Route)與控制器(Controller)(二)

控制器(Controller)

當我們在routes/web.php寫好路由(Route),
輸入網址之後,
路由就會去找要交給哪個控制器來處理.

譬如昨天我們寫的

Route::get('/user/auth/sign-up', 'UserAuthController@signUpPage');

當我們輸入 網址/user/auth/sign-up 的時候,
路由就會找到UserAuthController底下的signUpPage方法來處理,
然後做相應的動作,
控制器可以回傳View畫面,
也可以回傳Json字串等,
我們也可以在方法中加入編號,
這個我們在之後有用到的時候會再說明.

所有的控制器都放在app/Http/Controller目錄中
https://ithelp.ithome.com.tw/upload/images/20200926/20105694YwtL0sgjBB.png

預設會有一個Controller.php的檔案,
其他的Controller都是我們自己加上的,
如果專案比較小可以把所有的Controller放在app/Http/Controller/這一個目錄底下,
但是如果專案比較大,
常常就需要分好幾個資料夾來放我們的控制器(Controller),
至於要怎麼分,
每個人有每個人的習慣,
沒有一定的規範,
當然有時候公司內部為了方便管理會有公司內部的規定,
這時候我們就按照公司內部的規定來執行就好了.

我們現在把HomeController.php改成這樣:

<?PHP
namespace App\Http\Controllers;

use App\Http\Controllers\Controller;

class HomeController extends Controller
{
    //首頁
    public function indexPage()
    {
        //省略
    }
}
?>

可以看到最前面有一行 namespace App\Http\Controllers;,
這個是命名空間的宣告,
根據Laravel的規範需要用目錄來命名,
當我們需要使用到其他檔案的時候,
就需要連同命名空間一起呼叫,
譬如 use App\Http\Controllers\Controller;,
我們就可以使用App\Http\Controllers\Controller.php的功能

模板(views)

Laravel方便的地方就是使用模板,
所有的模板都放在resources/views目錄底下,
名稱必須命名為*.blade.php,
否則無法正確使用.
https://ithelp.ithome.com.tw/upload/images/20200926/20105694qrr8acg8Zy.png

我們把剛剛的App/Http/Controllers/HomeController.php修改如下:

<?PHP
namespace App\Http\Controllers;

use App\Http\Controllers\Controller;

class HomeController extends Controller
{
    //首頁
    public function indexPage()
    {
        return view('welcome');
    }
}
?>

當我們輸入首頁的網址的時候就會去讀resources/views/welcome.blade.php這個檔案,
現在我們輸入 http://localhost:8915/ 就會看到以下內容,
在這裡輸入的Port號是要根據我們在Server上的設定.
https://ithelp.ithome.com.tw/upload/images/20200926/20105694jGvphgDp0s.png

我是直接拿Laravel預設畫面來用,
表示我們已經成功呼叫模板了.