上次做好了留言板,這次我們增加一個名稱顯示
留言板要顯示是誰貼的文
為了簡化流程我們不建立會員註冊的表單
而是在文章新增一個作者欄位
進入網站要輸入使用者名稱,存入 session
用 middleware 判斷 session 是否存在,不存在則導回輸入頁面
所以先去改之前的 migrate 檔案
再來註冊進 /app/Http/Kernel.php
因為我們每一頁都要判斷用戶有沒有設定 username
所以設定在 $middleware 內
如果是很多個 middleware 要一起引入,可以設定一個 $middlewareGroups
而 $middlewareGroups['web'] 是預設會引入的
至於個別頁面才用到的 middleware 可以設定在 $routeMiddleware
在路由裡面設定
然後我們就踩到雷了
$middleware 是每一頁都會做的預處理
今天目標是,如果沒有設定 username 要跳到設定頁面
如果做在這邊,連設定 username 也會被影響
造成無限跳轉問題!
所以我們應該加在 $routeMiddleware 中,個別去引用
或是用路由群組一次引用
先來改一下 middleware註冊位置
比較一下你自己的檔案
可以看到我們把剛剛新增的 middleware ,命名為 username
再就是路由,看看說的 路由群組 怎麼用
用一個 Route::group 定義給他 middleware 然後包在 function 裡面
如此就會在進入這底下這些 Route 的時候使用叫做 username 的 middleware 檢查
弄了半天我們還沒開始設定 mIddleware 條件
開啟剛剛建立的 VerifyUser.php 這隻 middleware 檔案
當進入驗證時候,去判斷有沒有設定名稱的 session
沒有的話就跳轉回設定頁面,我是設定首頁是設定頁面
長個像這樣
先用 Laravel 定義的方式取得名為 username 的 session
預設值是 NULL 如果取回來的 username 為空
那就導向設定使用者名稱頁面 (首頁)
否則,把回傳值帶入傳送到 controller 繼續執行路由
再來就是要找地方設定 username 的 session 啦
新建一個頁面來輸入表單,然後設定路由顯示輸入頁面和送出後接收的方法
還要有 controller 處理這一段,在 userController 中
把 store 方法拿來處理寫入 session
一樣用 Laravel 內建的 session 方法,完成後導向文章頁面
只是必須在程式最上方加入這行,來宣告使用 Session 方法
否則 Laravel 會報錯,說無法存取 Session 這個 class
做到這邊就差不多完成了,已經可以設定 username 並且寫入 session
如果沒有設定就想查看留言,則會導向設定頁面
接下來就可以在資料表上動手腳,加入個別文章的 username 欄位
然後把取得的 username 給顯示在頁面上,然後寫入文章
這樣每一篇文章都可以知道是誰發表的
所以我們只需要在寫入時加入
最終頁面看起來就像這樣
花了比預期多很多的時間做這個東西
不過也藉此弄清楚蠻多東西的,還有就是對於整個規劃的流程比較熟悉了
接下來就是要做更深入的練習
像是真正的註冊,然後更新和刪除資料
留言板要顯示是誰貼的文
為了簡化流程我們不建立會員註冊的表單
而是在文章新增一個作者欄位
進入網站要輸入使用者名稱,存入 session
用 middleware 判斷 session 是否存在,不存在則導回輸入頁面
所以先去改之前的 migrate 檔案
middleware
先新建一個 middleware 吧
php artisan make:middleware {name}
再來註冊進 /app/Http/Kernel.php
然後我們就踩到雷了
$middleware 是每一頁都會做的預處理
今天目標是,如果沒有設定 username 要跳到設定頁面
如果做在這邊,連設定 username 也會被影響
造成無限跳轉問題!
所以我們應該加在 $routeMiddleware 中,個別去引用
或是用路由群組一次引用
先來改一下 middleware註冊位置
比較一下你自己的檔案
可以看到我們把剛剛新增的 middleware ,命名為 username
再就是路由,看看說的 路由群組 怎麼用
用一個 Route::group 定義給他 middleware 然後包在 function 裡面
如此就會在進入這底下這些 Route 的時候使用叫做 username 的 middleware 檢查
弄了半天我們還沒開始設定 mIddleware 條件
開啟剛剛建立的 VerifyUser.php 這隻 middleware 檔案
當進入驗證時候,去判斷有沒有設定名稱的 session
沒有的話就跳轉回設定頁面,我是設定首頁是設定頁面
長個像這樣
先用 Laravel 定義的方式取得名為 username 的 session
預設值是 NULL 如果取回來的 username 為空
那就導向設定使用者名稱頁面 (首頁)
否則,把回傳值帶入傳送到 controller 繼續執行路由
再來就是要找地方設定 username 的 session 啦
新建一個頁面來輸入表單,然後設定路由顯示輸入頁面和送出後接收的方法
還要有 controller 處理這一段,在 userController 中
把 store 方法拿來處理寫入 session
一樣用 Laravel 內建的 session 方法,完成後導向文章頁面
只是必須在程式最上方加入這行,來宣告使用 Session 方法
use Illuminate\Support\Facades\Session;
否則 Laravel 會報錯,說無法存取 Session 這個 class
做到這邊就差不多完成了,已經可以設定 username 並且寫入 session
如果沒有設定就想查看留言,則會導向設定頁面
接下來就可以在資料表上動手腳,加入個別文章的 username 欄位
然後把取得的 username 給顯示在頁面上,然後寫入文章
這樣每一篇文章都可以知道是誰發表的
所以我們只需要在寫入時加入
$username = \request()->get('username');就可以取得目前 session 中的 username 來寫入資料庫
最終頁面看起來就像這樣
花了比預期多很多的時間做這個東西
不過也藉此弄清楚蠻多東西的,還有就是對於整個規劃的流程比較熟悉了
接下來就是要做更深入的練習
像是真正的註冊,然後更新和刪除資料
留言
張貼留言