1. 關於 Laravel 1-1 為何需要框架? 1-2 快速安裝開發環境及開發工具 1-2-1 以Laragon建立運作環境 1-2-2 修改資料庫密碼並建立myshop資料庫 1-2-3 Visual Studio Code文字編輯器 1-2-4 安裝 Composer 1-2-5 [參考]註冊 GitHub 1-2-6 [參考]瀏覽器附加元件 1-2-7 [參考]申請mailtrap帳號 1-2-8 [參考]用Homestead建構開發環境 2. 專案需求分析 2-1 建立專案 2-2 [參考]將專案加入本地端的 git 2-3 [參考]將專案放上GitHub 2-4 設定專案環境 2-5 Laravel運作週期 3. 建立使用者認證 3-1 新增中文語系 4. 了解路由 Router 及視圖 View 4-1 製作系統主樣板 4-2 為樣板製作中文語系檔 4-3 修改首頁畫面 4-4 Blade 樣板語法(自訂導覽列選項) 5. 安裝 laravel-admin 後台 5-1 修改後台設定檔 5-2 將後台選單中文化的方法 6. 修改使用者資料表 6-1 修改註冊頁面 6-2 讓新增的欄位可以寫入資料庫 6-3 剛剛我們做了什麼? 7. 開始定義系統各項功能 7-1 還沒有控制器的路由寫法 7-2 有控制器的路由寫法 8. 在後台新增買家管理 8-1 建立管理買家的後台控制器 8-2 新增管理買家的路由 8-3 新增選單 8-4 調整可修改的項目 9. 建立商品模型 9-1 編輯並執行商品(Product)的 migrate 檔案 9-2 建立後台商品管理頁面 9-3 中文化商品管理界面 9-4 後台新增商品頁面 9-5 後台的驗證表單資料 9-6 後台加入所見即所得編輯器 9-7 後台修改商品 10. 建立前台顯示商品頁面 10-1 建立前台商品控制器 10-2 修改路由讓首頁呈現商品列表 10-3 修改控制器以執行取得資料動作 10-4 修改模型以正確顯示圖片 10-5 修改視圖以顯示商品列表 11. 建立商品測試資料 11-1 讓系統也可以顯示測試圖片 11-2 建立Seeder快速填充資料 12. 建立商品詳情頁的路由 12-1 建立商品詳情頁的控制器 12-2 路由模型綁定 12-3 建立商品詳情頁的視圖 13. 一般的異常處理 13-1 優雅的異常處理 14. 關於購物車 14-1 建立購物車的模型 14-2 設定商品、購物車與買家的關聯 14-3 建立新增至購物車的路由 14-4 建立購物車控制器 15. 使用 Laravel Mix 來管理前端資源 15-1 修改前台視圖 15-2 安裝 SweetAlert 15-3 實現加入購物車按鈕 15-4 將購物項目寫入資料庫 15-5 用 fillable 批量賦值寫入 15-6 建立Request來做資料整理及檢查 15-7 利用模型觀察器建立使用者資料 15-8 根據不同情況來進行新增品項或累加品項 16. 查看購物車商品 16-1 微調購物車的傳送方式 16-2 刪除某個購物品項 16-3 調整商品數量 17. 關於訂單 17-1 建立訂單及品項的模型及控制器 17-2 設定訂單及訂單項目的關聯 17-3 加入送出訂單按鈕 17-4 我的訂單列表 17-5 後台訂單管理 17-6 中文化訂單管理界面 18. 重建由GitHub下載的Laravel專案 18-1 佈署到主機上
16-3
調整商品數量
一、讓小計可以隨數量即時變化
基本上,這個屬於前端工作而已,所以,我們只要修改\專案\resources\views\cart\index.blade.php
即可。
首先我們先將「數量」的部份改為表單,可以用number
類型,如此瀏覽器會自動出線上下調整數字的按鈕,若是加上min="1"
的屬性還可以設定其最小值為1。
@if($cart->product->on_sale)
<input type="number" min="1" class="form-control text-center amount" name="amount[{{ $cart->product_id }}]" value="{{ $cart->amount }}" data-cartid="{{ $cart->id }}">
@else
<div class="warning">该商品已下架</div>
@endif
我們在class
加上amount
,以便等一下可以拿來當挑選器用。
我們還加上data-cartid
,如此便能輕鬆抓取目前點到的這個數量,其購物車的品項編號為何(其實用商品編號亦可,只要其他部份統一就行)。
另外,我們在此也順便判斷一下商品是否有被下架,若已經下架,則購物車就不顯示該商品數量。還有name的部份記得設成陣列,等會送出訂單時就會用到。
價格的部份我們也用,<span>
包起來,並給予一個特定的id
,搭配購物車的品項編號,以便等會兒數量調整時,可以根據id
來即時調整價格的內容。
<span id="price-{{ $cart->id }}">
{{ $cart->product->price }}
</span>
小計的部份也和價格一樣的處理方式,只是id
命名不同而已,不過我們有用套用class="sum"
,如此,要在JavaScript中跑迴圈,以取得最後的小計值,會簡單許多。
<span class="sum" id="sum-{{ $cart->id }}">
{{ $cart->product->price * $cart->amount }}
</span>
JavaScript部份就是要來處理當「數量」的值改變時,也可以同時修改小計的值
$('.amount').change(function () {
var cartid = $(this).data('cartid');
var sum = $(this).val() * $('#price-'+cartid).text();
$('#sum-'+cartid).text(sum);
});
首先,當某個數量值改變時(第1行),我們就先去抓出其購物車的品項編號為何(第2行)
接著,利用購物車的品項編號就可以抓出該品像的售價,將之乘以目前選購數量,就可以得到新的小計值(第3行)
最後一樣利用購物車的品項編號,將新的小計值,塞入指定的小計位置中(第4行)。
最後看起來像這樣:
二、加入總計
如果想讓買家可以一目了然的知道目前這樣要花多少錢,我們可以加入總計。
@section('content')
@php
$total = 0;
@endphp
<h1>我的購物車</h1>
<table class="table table-striped">
...略...
@forelse($user->carts as $cart)
<tr>
...略...
</tr>
@php
$total+=$cart->product->price * $cart->amount
@endphp
@empty
...略...
@endforelse
<tr>
<th colspan=4 class="text-right">共計</th>
<th nowrap class="text-right">
<span id="total">{{ $total }}</span>
</th>
<th>元</th>
</tr>
</table>
@endsection
首先,先利用@php
及@endphp
,在裡面定義$total
的初始值(1~3行)。
然後在迴圈裡面計算每一個品項的小計,並累加至$total
中(13~15行)
最後,在迴圈之外,在表格尾巴的第分加入顯示總計的值,並指定id="total"
,以便修改其值(23行)
JavaScript部份也要修改,畢竟只要數量一調整,總計也得跟著改變才行:
$('.amount').change(function () {
...略...
var total = 0;
$('.sum').each(function() {
total += Number($(this).text());
});
$('#total').text(total);
});
道理和上面的流程差不多,只要數量一變動,就用JavaScript重跑一次,不過這次比較簡單,
首先,先用JavaScript的方式定義total
的初始值(4行)。
然後利用迴圈讀出所有有套用class="sum"
的小計欄位值,並累加至total
中,Number()
用來轉型至數字,這樣才能累加(5~7行)
最後,在迴圈之外,在得到的結果,套入id="total"
的元件中(8行)
整個看起來像這樣:
1. 關於 Laravel 1-1 為何需要框架? 1-2 快速安裝開發環境及開發工具 1-2-1 以Laragon建立運作環境 1-2-2 修改資料庫密碼並建立myshop資料庫 1-2-3 Visual Studio Code文字編輯器 1-2-4 安裝 Composer 1-2-5 [參考]註冊 GitHub 1-2-6 [參考]瀏覽器附加元件 1-2-7 [參考]申請mailtrap帳號 1-2-8 [參考]用Homestead建構開發環境 2. 專案需求分析 2-1 建立專案 2-2 [參考]將專案加入本地端的 git 2-3 [參考]將專案放上GitHub 2-4 設定專案環境 2-5 Laravel運作週期 3. 建立使用者認證 3-1 新增中文語系 4. 了解路由 Router 及視圖 View 4-1 製作系統主樣板 4-2 為樣板製作中文語系檔 4-3 修改首頁畫面 4-4 Blade 樣板語法(自訂導覽列選項) 5. 安裝 laravel-admin 後台 5-1 修改後台設定檔 5-2 將後台選單中文化的方法 6. 修改使用者資料表 6-1 修改註冊頁面 6-2 讓新增的欄位可以寫入資料庫 6-3 剛剛我們做了什麼? 7. 開始定義系統各項功能 7-1 還沒有控制器的路由寫法 7-2 有控制器的路由寫法 8. 在後台新增買家管理 8-1 建立管理買家的後台控制器 8-2 新增管理買家的路由 8-3 新增選單 8-4 調整可修改的項目 9. 建立商品模型 9-1 編輯並執行商品(Product)的 migrate 檔案 9-2 建立後台商品管理頁面 9-3 中文化商品管理界面 9-4 後台新增商品頁面 9-5 後台的驗證表單資料 9-6 後台加入所見即所得編輯器 9-7 後台修改商品 10. 建立前台顯示商品頁面 10-1 建立前台商品控制器 10-2 修改路由讓首頁呈現商品列表 10-3 修改控制器以執行取得資料動作 10-4 修改模型以正確顯示圖片 10-5 修改視圖以顯示商品列表 11. 建立商品測試資料 11-1 讓系統也可以顯示測試圖片 11-2 建立Seeder快速填充資料 12. 建立商品詳情頁的路由 12-1 建立商品詳情頁的控制器 12-2 路由模型綁定 12-3 建立商品詳情頁的視圖 13. 一般的異常處理 13-1 優雅的異常處理 14. 關於購物車 14-1 建立購物車的模型 14-2 設定商品、購物車與買家的關聯 14-3 建立新增至購物車的路由 14-4 建立購物車控制器 15. 使用 Laravel Mix 來管理前端資源 15-1 修改前台視圖 15-2 安裝 SweetAlert 15-3 實現加入購物車按鈕 15-4 將購物項目寫入資料庫 15-5 用 fillable 批量賦值寫入 15-6 建立Request來做資料整理及檢查 15-7 利用模型觀察器建立使用者資料 15-8 根據不同情況來進行新增品項或累加品項 16. 查看購物車商品 16-1 微調購物車的傳送方式 16-2 刪除某個購物品項 16-3 調整商品數量 17. 關於訂單 17-1 建立訂單及品項的模型及控制器 17-2 設定訂單及訂單項目的關聯 17-3 加入送出訂單按鈕 17-4 我的訂單列表 17-5 後台訂單管理 17-6 中文化訂單管理界面 18. 重建由GitHub下載的Laravel專案 18-1 佈署到主機上