iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 20
0
自我挑戰組

來用Laravel做點什麼吧系列 第 20

D20 超簡易版FB - 登入註冊(2)

  • 分享至 

  • xImage
  •  

Laravel基本登入流程是這樣的。

圖示上層是看到的頁面,下層是Controller,如果沒有登入,進到 http://localhost/home 時會轉到 http://localhost/login

當我們要連到 /home 時,Route會呼叫HomeController.php中的index方法,不過打開該檔案看看會發現在這之前還有個__construct方法要處理。

// HomeController.php
public function __construct()
{
    $this->middleware('auth');
}

這邊是有指定Middleware來過濾什麼對象可以瀏覽 /home ,我們從app/Http/Kernel.php可以看到這個auth是Authenticate.php

// Authenticate.php
protected function redirectTo($request)
{
    if (! $request->expectsJson()) {
        return route('login');
    }
}

雖然圖示上我是標return login,但實際上是呼叫另一個Route,這條Route是定義在昨天提到的Auth::routes()裡面(不記得的回去看)。假如已經登入了,則會繼續完成HomeController@index,回傳 home 的 View;如果沒登入,最後會回傳 login 的 View,然後轉給LoginController.php接手。

打開LoginController.php會發現,**怎麼好像少了很多東西?!**對,這裡根本什麼都沒有。

這很正常,如果打開檔案發現它異常的簡短,就往它繼承的對象去找,我們用到的東西都在它繼承的對象那邊,可以來這邊看看原始碼。

相關資料:Illuminate | Laravel API

酷。

註冊就簡單些,負責的controller是RegisterController.php,和login一樣,實際上被Route呼叫的方法都是繼承自別人。

特別需要提的是表單驗證。

protected function validator(array $data)
{
    return Validator::make($data, [
        'name' => ['required', 'string', 'max:255'],
        'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
        'password' => ['required', 'string', 'min:6', 'confirmed'],
    ]);
}

Validator::make用來產生驗證器,$data是放要驗證的資料,後面那串是驗證規則。

required意思是必填欄位;string這邊是資料格式;email強調是Email格式;minmax是資料長度規定,比較常用是這幾個。

先筆記筆記,後面要做發文功能時會用到。


上一篇
D19 超簡易版FB - 登入註冊(1)
下一篇
D21 超簡易版FB - 寄信(1)
系列文
來用Laravel做點什麼吧30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言