今天我們要來新增route,那route是什麼呢?
在這裡我會比喻成連接controller與view之間的路,
controller中的哪個function要到哪個頁面,
這中間都需要一個運輸資料的路,而這個就是路由的用意啦~
在這裡我們可以用兩種方式去撰寫
Step1.
第一種:http指令
在web.php中首頁的route,這是最基本的寫法,
還記得在我們講http指令的時候他有出來客串一下嗎,
如果不記得沒關係,我們現在來複習一下。
- Route:: HTTP指令 ( ‘url’ , function )
2. Route:: HTTP指令 ( ‘url’ , ‘OOController@functionname’ )
EX.1:Route:: get ( ‘/post’ , function(){ return view(‘welcome’);} )
EX.2:Route:: get ( ‘/post’ , ‘PostController@index )
Step2.
輸入php artisan route:list
我們在Terminal輸入php artisan route:list ,
這可以取得所有controller中function的route資訊,
那我們這裡只要看WorkController的部分就好,主要的分類為:
Domain | Method | URI | Name | Action
- Domain那一欄是空的所以我們就不看
- Method是那個function需要用到的http指令
- URL就是我們網址的填寫方式
- Name則是function名稱
- Action是function位置
Step3.
每個function的路由
Route:: Method ( ‘URL’ , ‘OOController@functionname’ )->name(‘自行取’)
將對應的資料填上,最後name的部分可有可無,
但有跟沒有在之後頁面撰寫的部分會不一樣。
- 有name的話是{{ route(‘home’) }},如果是有id的情況下
{{ route(‘home.show’, $work->id) }}
- 沒有name的話是{{ url(‘works’) }},如果是有id的情況下
{{ url(‘works/{work}’) }}
這就看大家喜歡哪種方式嘍~~
Step4.
第二種:resource
如果說在新增controller時有用到resource來建立crud的function,
那在這邊用resource就可以取得那些function,我們在括弧中會看到:
- ‘works’自行取名字
- ‘WorkController’所針對的controller名稱
那’works’要在哪裡使用呢?他也算是網址的一種,只是是內部的網址。
還記得先前的WorkController中store( )和update( )
最後導向的頁面是這樣寫的嗎?
‘works.show’ 這是表示導回show這個function中的頁面,
所以在之後的撰寫中,如果我們需要導向到某個頁面時,
就可以用 {{ route(‘works.function名稱’) }},
如果是有id的話{{ route(‘works.function名稱’, $work->id) }}。
以上是對路由撰寫的兩種方式,一樣依大家的習慣去做就行了。