iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 7
0
Modern Web

Laravel學習系列 第 7

LARAVEL學習 DAY7 CRUD(續) 關於路由與CONTROLLER建立

LARAVEL學習 DAY7 CRUD(續) 關於路由與CONTROLLER建立


看我每天都卡就知道我雖然很忙 但是卻很想完成比賽了...

前言

雖然很想不拖戲 但是該說的還是要說...

關於vhosts的部分 有沒有人覺得用了反而變慢?
是因為他對多行解析才會變這樣... 我也不知道怎麼冒出這個問題的
反正把原本很多行的改成一行就好了
像我的就是這樣127.0.0.1 localhost ironman.local

正文

來來來 看過來 這個
php artisan make:controller Web/CRUDController --resource
WHAT RESOURCE? WHY RESOURCE?
還記得上次才在社團與人爭論過RESTful...
另外還有GraphQL 這邊就不多說了
先講為什麼要加web 只是為了與api做區分而已

相信有底子的各位都知道所謂的GET POST 這些HTTP請求
其中GET負責獲取資料 也可以在url上帶一些參數 如 /user?id=1 諸如此類 用明碼傳輸也沒有問題的請求
另外還有POST 例如要傳輸密碼 就不會被看到
POST通常被用來CRUD中的CU部分 至於D的話有點尷尬 兩個做起來都沒有太大的差別 但通常被歸類在POST處理的部分

那什麼是RESTful呢?
其實就是讓POST請求更語意化

Verb URI Action Route Name
GET /photos index photos.index
GET /photos/create create photos.create
POST /photos store photos.store
GET /photos/{photo} show photos.show
GET /photos/{photo}/edit edit photos.edit
PUT/PATCH /photos/{photo} update photos.update
DELETE /photos/{photo} destroy photos.destroy

(拉這個表很累)
Laravel已經幫我們列出這個表格 其中CRUD又被拆分為頁面以及行為

index         顧名思義就是列表、清單
create        其實是指新增時的頁面 所以是GET
store         就是新增一筆資料來進行"儲存"的這個動作
show          與index不同在於 index是多筆 show是單筆
edit          編輯頁面
update    PUT 全部更新
        PATCH 部分更新
destroy       摧毀,即刪除

話說我覺得一上來就講這個有點難...

反正照做就對啦~

下完指令會看到檔案(app\Http\Controllers\Web\CRUDController.php)長這個樣子
(抱歉是反斜線 因為我在Windows)

<?php

namespace App\Http\Controllers\web;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

class CRUDController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        //
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        //
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        //
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        //
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        //
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        //
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        //
    }
}

大致上的function幫你建好 只差在內容了 其實內容也十分簡單
但是有沒有人想過 怎麼去操作它? 是路由 我加了路由

(對不起 我星爺粉)

路由呢 在5.多版(忘了 不是很重要)將路由拆成了web與api 其中為了區分兩者 在中介層(middleware)中動了手腳 這個看之後有沒有機會講到

我們先來到這個檔案routes\web.php
會有個這個

Route::get('/', function () {
    return view('welcome');
});

看你是要刪掉還是留著用來看你的專案有沒有壞掉(抱歉 手滑 我砍了)

然後添加這行
Route::resource('crud', 'Web\CRUDController');
我很懶惰 不管了 就是叫CRUD了
有錯的話一定是斜線方向帶壞我的

這時候可以下指令php artisan route:list

我的長這樣 至於那api/user又是另一回事了 先不理它

至於還有一個方法可以使用

這是官方例子 可以only(只取)想要的 或者是except(不要)不想用的

這時候呢就可以訪問路由啦
如果你看到了
Sorry, the page you are looking for could not be found.
表示你跑到了首頁 或者其他不存在的網址...
正確網址在http://ironman.local/crud
然後你會看到這個一片白是正常的 因為controller沒回傳東西

結語

什麼 為什麼是結語 其他東西呢?
聽了學姊的建議之後我決定拆拆拆~ 不然寫完30篇會虛脫
所以我們下集待續啦~(遭扔番茄)


上一篇
LARAVEL學習 DAY 6 CRUD 這次來真的
下一篇
LARAVEL學習 DAY 8 CRUD(續)BLADE?
系列文
Laravel學習30

尚未有邦友留言

立即登入留言