04-16-2019

Laravel _新增Route

 

今天我們要來新增route,那route是什麼呢?

在這裡我會比喻成連接controller與view之間的路,

controller中的哪個function要到哪個頁面,

這中間都需要一個運輸資料的路,而這個就是路由的用意啦~

在這裡我們可以用兩種方式去撰寫

 

Step1.

 

第一種:http指令

 

在web.php中首頁的route,這是最基本的寫法,

還記得在我們講http指令的時候他有出來客串一下嗎,

如果不記得沒關係,我們現在來複習一下。

 

  1. 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) }}

 

以上是對路由撰寫的兩種方式,一樣依大家的習慣去做就行了。