Nền tảng Kiến thức - Hành trang tới Tương lai
Card image

Chương 9-Bài 2. Xây dựng chức năng CRUD (Thêm, Sửa, Xóa, Xem) danh mục phẳng - Loại sản phẩm (index)

Tác giả: Dương Nguyễn Phú Cường #135
Ngày đăng: Hồi xưa đó
Lượt xem: 707

Yêu cầu cần có khi thực hiện chức năng

  • Cần phải có table loaisanpham. Nếu chưa có table, vui lòng xem lại bài tạo cấu trúc database bằng migration.
  • Cần phải có model LoaiSanPham. Chúng ta sẽ thực hiện truy vấn database dựa trên model. Nếu chưa có model, vui lòng xem lại bài học tạo model

Chức năng cần thực hiện

Cần tạo chức năng dành cho Quản trị Hệ thống (Admin) quản lý Danh mục Loại Sản phẩm.

Cách thực hiện

Step 1: tạo các routes Danh mục sản phẩm

  • Hiệu chỉnh file routes/web.php
// route Danh mục Loại Sản phẩm
// Hàm Route::resource() sẽ tạo toàn bộ các route CRUD theo tiêu chuẩn RestFul API
Route::resource('/admin/loai', 'Backend\LoaiController');

// Hoặc route riêng lẻ
Route::get('admin/loai', 'Backend\LoaiController@index')->name('admin.loai.index');
Route::get('admin/loai/create', 'Backend\LoaiController@create')->name('admin.loai.create');
Route::post('admin/loai/store', 'Backend\LoaiController@store')->name('admin.loai.store');
Route::get('/admin/loai/edit/{id}', 'Backend\LoaiController@edit')->name('admin.loai.edit');
Route::put('/admin/loai/edit/{id}', 'Backend\LoaiController@update')->name('admin.loai.update');
Route::delete('/admin/loai/delete/{id}', 'Backend\LoaiController@destroy')->name('admin.loai.destroy');
  • Kiểm tra các route bằng câu lệnh:
php artisan route:list
Nếu người dùng (client) gởi các request đến server thì Laravel sẽ điều hướng đến các action cụ thể như bảng trên. Ví dụ:
  • http://tenmiencuaban.com/admin/loaisanpham (GET) -> Laravel sẽ điều hướng đến action index() trong controller Backend\LoaiSanPhamController.
  • http://tenmiencuaban.com/admin/loaisanpham/create (GET) -> Laravel sẽ điều hướng đến action create() trong controller Backend\LoaiSanPhamController.
  • http://tenmiencuaban.com/admin/loaisanpham (POST) -> Laravel sẽ điều hướng đến action store() trong controller Backend\LoaiSanPhamController.
  • http://tenmiencuaban.com/admin/loaisanpham/1/edit (GET) -> Laravel sẽ điều hướng đến action edit() trong controller Backend\LoaiSanPhamController.
  • http://tenmiencuaban.com/admin/loaisanpham/1 (PUT/PATCH) -> Laravel sẽ điều hướng đến action update() trong controller Backend\LoaiSanPhamController.
  • http://tenmiencuaban.com/admin/loaisanpham/1 (DELETE) -> Laravel sẽ điều hướng đến action destroy() trong controller Backend\LoaiSanPhamController.

Step 2: tạo controller chứa các action thực thi các tác vụ CRUD (Thêm, Sửa, Xóa) cho Danh mục Sản phẩm

    • Thực thi câu lệnh
php artisan make:controller Backend\LoaiController --resource
  • Laravel Framework sẽ tạo cho bạn file controller ở app\Http\Controllers\Backend\LoaiController.php

Step 3: thực hiện tạo màn hình hiển thị danh sách Loại Sản phẩm (index)

Mô hình hoạt động của index:

Viết code cho action index():

  • Action index() thường dùng để hiển thị màn hình danh sách (theo dạng bảng dòng, cột) các sản phẩm có trong table loaisanpham
  • Danh sách thường hiển thị dạng Phân trang.
  • Trên màn hình sẽ có nút Thêm Sản phẩm mới
  • Trong mỗi dòng Sản phẩm, sẽ có nút Sửa, Xóa
Hiệu chỉnh file app/Http/Controllers/Backend/LoaiController.php
use App\Loai;

public function index()
{
    // Sử dụng Eloquent Model để truy vấn dữ liệu
    $dsLoai = Loai::all(); // SELECT * FROM loaisanpham

    // Đường dẫn đến view được quy định như sau: <FolderName>.<ViewName>
    // Mặc định đường dẫn gốc của method view() là thư mục `resources/views`
    // Hiển thị view `backend.loai.index`
    return view('backend.loai.index')
        // với dữ liệu truyền từ Controller qua View, được đặt tên là `danhsachloaisanpham`
        ->with('danhsachloaisanpham', $dsLoai);
}
Tạo view index.blade.php
  • Để dễ dàng quản lý các view, ta sẽ tạo 1 thư mục tương ứng với tên Controller, mỗi action sẽ tương ứng với tên view.
  • Tạo folder resources/views/backend/loai
  • Tạo file resources/views/backend/loai/index.blade.php
{{-- View này sẽ kế thừa giao diện từ `backend.layouts.index` --}}
@extends('backend.layouts.master')

{{-- Thay thế nội dung vào Placeholder `title` của view `backend.layouts.index` --}}
@section('title')
Danh sách Loại sản phẩm
@endsection

{{-- Thay thế nội dung vào Placeholder `content` của view `backend.layouts.index` --}}
@section('content')
<!-- Đây là div hiển thị Kết quả (thành công, thất bại) sau khi thực hiện các chức năng Thêm, Sửa, Xóa.
- Div này chỉ hiển thị khi trong Session có các key `alert-*` từ Controller trả về. 
- Sử dụng các class của Bootstrap "danger", "warning", "success", "info" để hiển thị màu cho đúng với trạng thái kết quả.
-->
<div class="flash-message">
    @foreach (['danger', 'warning', 'success', 'info'] as $msg)
      @if(Session::has('alert-' . $msg))
      <p class="alert alert-{{ $msg }}">{{ Session::get('alert-' . $msg) }} <a href="#" class="close" data-dismiss="alert" aria-label="close">&times;</a></p>
      @endif
    @endforeach
</div>

<!-- Tạo nút Thêm mới sản phẩm 
- Theo quy ước, các route đã được đăng ký trong file `web.php` đều phải được đặt tên để dễ dàng bảo trì code sau này.
- Đường dẫn URL là đường dẫn được tạo ra bằng route có tên `danhsachsanpham.create`
- Sẽ có dạng http://tenmiencuaban.com/admin/danhsachsanpham/create
-->
<a href="{{ route('loai.create') }}" class="btn btn-primary">Thêm mới sản phẩm</a>

<!-- Tạo table hiển thị danh sách các sản phẩm -->
<table class="table table-bordered">
    <thead>
        <tr>
            <th>Mã</th>
            <th>Tên</th>
            <th>Hình ảnh</th>
            <th>Thuộc loại</th>
            <th>Sửa-Xóa</th>
        </tr>
    </thead>
    <tbody>
        <!-- Sử dụng vòng lặp foreach để duyệt qua các sản phẩm 
        - Biến $danhsachsanpham là biến được truyền qua từ action `index()` trong controller SanPhamController.
        -->
        @foreach($danhsachsanpham as $sp)
            <tr>
                <td>{{ $sp->sp_ma }}</td>
                <td>{{ $sp->sp_ten }}</td>
                <td><img src="{{ asset('assets/storage/photos/' . $sp->sp_hinh) }}" class="img-list" /></td>
                <td>{{ $sp->loaisanpham->l_ten }}</td>
                <td>
                    <!-- Tạo nút Sửa sản phẩm 
                    - Theo quy ước, các route đã được đăng ký trong file `web.php` đều phải được đặt tên để dễ dàng bảo trì code sau này.
                    - Đường dẫn URL là đường dẫn được tạo ra bằng route có tên `danhsachsanpham.edit`
                    - Route `danhsachsanpham.edit` cần truyền vào 1 tham số {id}. Giá trị cần truyền là {id} của sản phẩm người dùng cần hiệu chỉnh.
                    - Các tham số cần truyền vào hàm route() là 1 array[]
                    - Sẽ có dạng http://tenmiencuaban.com/admin/danhsachsanpham/{id}/edit
                    -->
                    <a href="{{ route('danhsachsanpham.edit', ['id' => $sp->sp_ma]) }}" class="btn btn-primary pull-left">Sửa</a>

                    <!-- Tạo nút Xóa sản phẩm 
                    - Theo quy ước, các route đã được đăng ký trong file `web.php` đều phải được đặt tên để dễ dàng bảo trì code sau này.
                    - Đường dẫn URL là đường dẫn được tạo ra bằng route có tên `danhsachsanpham.destroy`
                    - Route `danhsachsanpham.destroy` cần truyền vào 1 tham số {id}. Giá trị cần truyền là {id} của sản phẩm người dùng cần xóa.
                    - Các tham số cần truyền vào hàm route() là 1 array[]
                    - Sẽ có dạng http://tenmiencuaban.com/admin/danhsachsanpham/{id}
                    -->
                    <form method="post" action="{{ route('danhsachsanpham.destroy', ['id' => $sp->sp_ma]) }}" class="pull-left">
                        <!-- Khi gởi Request Xóa dữ liệu, Laravel Framework mặc định chỉ chấp nhận thực thi nếu có gởi kèm field `_method=DELETE` -->
                        <input type="hidden" name="_method" value="DELETE" />
                        <!-- Khi gởi bất kỳ Request POST, Laravel Framework mặc định cần có token để chống lỗi bảo mật CSRF 
                        - Bạn có thể tắt đi, nhưng lời khuyên là không nên tắt chế độ bảo mật CSRF đi.
                        - Thay vào đó, sử dụng hàm `csrf_field()` để tự sinh ra 1 input có token dành riêng cho CSRF
                        -->
                        {{ csrf_field() }}
                        <button type="submit" class="btn btn-danger">Xóa</button>
                    </form>
                </td>
            </tr>
        @endforeach
    </tbody>
</table>
@endsection
Kiểm tra action index
Chạy câu lệnh php artisan serve, truy cập địa chỉ http://127.0.0.1:8000/admin/danhsachsanpham để kiểm tra kết quả.      

Chương trình học


  1. Bức tranh Tổng thể về Lập trình WEB
  2. Giới thiệu, cài đặt, cấu hình môi trường lập trình 9
    1. Cài đặt web server XAMPP #84
    2. Cài đặt công cụ truy vấn database HeidiSQL #85
    3. Cài đặt Composer để quản lý các gói thư viện trong PHP #86
    4. Cài đặt trình soạn thảo code Visual Studio Code IDE #64
    5. Tạo tên miền ảo trên máy cục bộ (virtual host on localhost) bằng XAMPP #107
    6. Cài đặt nền tảng quản lý Source Code sử dụng GIT #1030
    7. Cài đặt công cụ quản lý Source Code TortoiseGit #1045
    8. Cài đặt chế độ Debug PHP với Visual Studio Code #8066
    9. Tạo chứng chỉ SSL trên Localhost #10399
  3. Tập làm quen với quản lý source code bằng GitHub 3
    1. GitHub là gì? #79
    2. Tạo tài khoản, tạo kho dữ liệu (repository), clone source, commit/push và pull source với GitHub #2303
    3. Cách đóng gói phiên bản (Alpha, Beta, Release) bằng Tag trong GitHub #9415
  4. Cài đặt framework Laravel 1
    1. Cài đặt Framework Laravel #66
  5. Tìm hiểu mô hình kiến trúc MVC vận hành trong framework Laravel 4
    1. Cấu trúc thư mục trong Framework Laravel #9211
    2. Kiến trúc MVC là gì? #65
    3. Mô hình kiến trúc MVC vận hành trong Framework Laravel #67
    4. Thực hiện code theo mô hình kiến trúc MVC vận hành trong Framework Laravel #2341
  6. Sử dụng Template Engine để trình diễn nội dung trong các VIEW 3
    1. Template Engine là gì? #2356
    2. Blade Template Engine trong Laravel #2357
    3. Bài tập View - tạo trang Danh sách nhân viên sử dụng Blade Template #2381
  7. Dự án thực tế mẫu - Trang web bán hàng trực tuyến - Thiết kế CSDL 7
    1. Phân tích các yêu cầu, nghiệp vụ của khách hàng #68
    2. Mô hình thiết kế CSDL mẫu Sunshine #69
    3. Khởi tạo database sunshine, thiết lập kết nối CSDL trong Laravel #1143
    4. Tạo cấu trúc table bằng tính năng MIGRATION trong Laravel - Danh mục phẳng #70
    5. Tạo cấu trúc table bằng tính năng MIGRATION trong Laravel - Danh mục có liên kết khóa ngoại #1157
    6. Tạo dữ liệu ban đầu cho CSDL bằng tính năng SEED trong Laravel - Danh mục phẳng #71
    7. Tạo dữ liệu ban đầu cho CSDL bằng tính năng SEED trong Laravel - Danh mục có liên kết khóa ngoại #7851
  8. Dự án thực tế mẫu - Trang web bán hàng trực tuyến - Ánh xạ CSDL và Laravel 3
    1. Tạo lớp (class) ánh xạ CSDL bằng tính năng MODEL trong Laravel - Danh mục Phẳng - Loại sản phẩm #1165
    2. Tạo lớp (class) ánh xạ CSDL bằng tính năng MODEL trong Laravel - Danh mục phẳng - Sản phẩm #1166
    3. Tạo mối quan hệ giữa các lớp (class) MODEL trong Laravel #1174
  9. Dự án thực tế mẫu - Trang web bán hàng trực tuyến - Thiết kế Backend 20
    1. Thiết kế bố cục (layouts) cho giao diện Backend #72
    2. Xây dựng chức năng CRUD (Thêm, Sửa, Xóa, Xem) danh mục phẳng - Loại sản phẩm (index) #135
    3. Xây dựng chức năng CRUD (Thêm, Sửa, Xóa, Xem) danh mục phẳng - Loại sản phẩm (create) #137
    4. Xây dựng chức năng CRUD (Thêm, Sửa, Xóa, Xem) danh mục phẳng - Loại sản phẩm (edit) #138
    5. Xây dựng chức năng CRUD (Thêm, Sửa, Xóa, Xem) danh mục phẳng - Loại sản phẩm (delete) #139
    6. Xây dựng danh mục Sản phẩm có chức năng upload hình ảnh - Index #75
    7. Lưu đồ Upload file từ Client lên Server #2229
    8. Xây dựng danh mục Sản phẩm có chức năng upload hình ảnh - Create #108
    9. Xây dựng danh mục Sản phẩm có chức năng upload hình ảnh - Edit #87
    10. Xây dựng danh mục Sản phẩm có chức năng upload hình ảnh - Delete #88
    11. Xây dựng danh mục Sản phẩm có chức năng upload nhiều Hình ảnh cùng lúc #9259
    12. Xây dựng danh mục Sản phẩm có chức năng upload hình ảnh - Bổ sung menu vào sidebar #104
    13. Xây dựng chức năng xuất biểu mẫu và In ấn trực tiếp trên web #78
    14. Xây dựng chức năng xuất Excel #76
    15. Xây dựng chức năng xuất PDF #77
    16. Tạo chức năng Đăng nhập #1870
    17. Lưu đồ Kiểm tra ràng buộc dữ liệu (Validation) #2205
    18. Kiểm tra ràng buộc dữ liệu (Validation) phía Client #2206
    19. Kiểm tra ràng buộc dữ liệu (Validation) phía Server #2207
    20. Bài tập tổng hợp - Tạo các chức năng Backend cho trang web đọc Truyện Tranh và Tiểu Thuyết Online sử dụng Laravel framework #9312
  10. AngularJS 7
    1. AngularJS là gì? Cài đặt AngularJS và cú pháp sử dụng AngularJS #95
    2. Cách mô hình kiến trúc MVC vận hành trong AngularJS #96
    3. Cách sử dụng AngularJS Controller, Scope #98
    4. Cách sử dụng AngularJS Directive #97
    5. Cách sử dụng AngularJS Event #100
    6. Cách sử dụng AngularJS Filter #99
    7. Cách sử dụng AngularJS Validation #101
  11. Dự án thực tế mẫu - Trang web bán hàng trực tuyến - Thiết kế Frontend sử dụng AngularJS 11
    1. Thiết kế bố cục (layouts) cho giao diện Frontend #80
    2. Tích hợp AngularJS vào framework Laravel #102
    3. Tạo giao diện trang chủ (index) #81
    4. Tạo giao diện trang Giới thiệu (about) #109
    5. Tạo giao diện trang Liên hệ (contact) #114
    6. Tạo trang danh sách Sản phẩm (product) #110
    7. Tạo nút Thêm vào giỏ hàng cho từng sản phẩm (add-to-cart) #112
    8. Tạo trang Chi tiết Sản phẩm (product-detail) #111
    9. Tạo giỏ hàng (cart sidebar) #82
    10. Tạo trang thanh toán (checkout) #83
    11. Tạo đơn hàng và gởi mail xác nhận #103
  12. Bonus 9
    1. Đa ngôn ngữ trong Laravel #115
    2. Tạo báo cáo với biểu đồ ChartJS #116
    3. Tạo khung chọn Ngày tháng cho dự án #2431
    4. Tạo các trang thông báo lỗi tương ứng STATUS CODE #117
    5. Kiểm tra ứng dụng với tunnel ảo NGROK #2418
    6. Phân trang trong Laravel #2436
    7. Bổ sung khung xem Hình ảnh trước khi upload (preview image upload) #2439
    8. Tạo API trong Laravel và sử dụng AngularJS để hiển thị giao diện #9385
    9. Cách tự động sinh Ảnh nhiều kích cỡ (Automatic resize image) khi upload file Ảnh #9970
  13. Danh sách Đồ án xây dựng trang web sử dụng LARAVEL 2
    1. Đăng ký Đồ án Laravel #1188
    2. Hướng dẫn Nộp Đồ án Laravel #9417
  14. Tài liệu tham khảo 3
    1. Kho sách, nguồn tài liệu tham khảo #1313
    2. SourceCode Dự án mẫu #113
    3. Xây dựng chức năng Tìm kiếm theo nhiều tiêu chí bằng Model Eloquent #9426
  15. Thực hiện Đồ án 1
    1. Lộ trình Thực hiện đồ án Web Laravel #7883
Các bài học

Chương trình học

Bao gồm Module, Chương, Bài học, Bài tập, Kiểm tra...

Chương trình học


  1. Bức tranh Tổng thể về Lập trình WEB
  2. Giới thiệu, cài đặt, cấu hình môi trường lập trình 9
    1. Cài đặt web server XAMPP #84
    2. Cài đặt công cụ truy vấn database HeidiSQL #85
    3. Cài đặt Composer để quản lý các gói thư viện trong PHP #86
    4. Cài đặt trình soạn thảo code Visual Studio Code IDE #64
    5. Tạo tên miền ảo trên máy cục bộ (virtual host on localhost) bằng XAMPP #107
    6. Cài đặt nền tảng quản lý Source Code sử dụng GIT #1030
    7. Cài đặt công cụ quản lý Source Code TortoiseGit #1045
    8. Cài đặt chế độ Debug PHP với Visual Studio Code #8066
    9. Tạo chứng chỉ SSL trên Localhost #10399
  3. Tập làm quen với quản lý source code bằng GitHub 3
    1. GitHub là gì? #79
    2. Tạo tài khoản, tạo kho dữ liệu (repository), clone source, commit/push và pull source với GitHub #2303
    3. Cách đóng gói phiên bản (Alpha, Beta, Release) bằng Tag trong GitHub #9415
  4. Cài đặt framework Laravel 1
    1. Cài đặt Framework Laravel #66
  5. Tìm hiểu mô hình kiến trúc MVC vận hành trong framework Laravel 4
    1. Cấu trúc thư mục trong Framework Laravel #9211
    2. Kiến trúc MVC là gì? #65
    3. Mô hình kiến trúc MVC vận hành trong Framework Laravel #67
    4. Thực hiện code theo mô hình kiến trúc MVC vận hành trong Framework Laravel #2341
  6. Sử dụng Template Engine để trình diễn nội dung trong các VIEW 3
    1. Template Engine là gì? #2356
    2. Blade Template Engine trong Laravel #2357
    3. Bài tập View - tạo trang Danh sách nhân viên sử dụng Blade Template #2381
  7. Dự án thực tế mẫu - Trang web bán hàng trực tuyến - Thiết kế CSDL 7
    1. Phân tích các yêu cầu, nghiệp vụ của khách hàng #68
    2. Mô hình thiết kế CSDL mẫu Sunshine #69
    3. Khởi tạo database sunshine, thiết lập kết nối CSDL trong Laravel #1143
    4. Tạo cấu trúc table bằng tính năng MIGRATION trong Laravel - Danh mục phẳng #70
    5. Tạo cấu trúc table bằng tính năng MIGRATION trong Laravel - Danh mục có liên kết khóa ngoại #1157
    6. Tạo dữ liệu ban đầu cho CSDL bằng tính năng SEED trong Laravel - Danh mục phẳng #71
    7. Tạo dữ liệu ban đầu cho CSDL bằng tính năng SEED trong Laravel - Danh mục có liên kết khóa ngoại #7851
  8. Dự án thực tế mẫu - Trang web bán hàng trực tuyến - Ánh xạ CSDL và Laravel 3
    1. Tạo lớp (class) ánh xạ CSDL bằng tính năng MODEL trong Laravel - Danh mục Phẳng - Loại sản phẩm #1165
    2. Tạo lớp (class) ánh xạ CSDL bằng tính năng MODEL trong Laravel - Danh mục phẳng - Sản phẩm #1166
    3. Tạo mối quan hệ giữa các lớp (class) MODEL trong Laravel #1174
  9. Dự án thực tế mẫu - Trang web bán hàng trực tuyến - Thiết kế Backend 20
    1. Thiết kế bố cục (layouts) cho giao diện Backend #72
    2. Xây dựng chức năng CRUD (Thêm, Sửa, Xóa, Xem) danh mục phẳng - Loại sản phẩm (index) #135
    3. Xây dựng chức năng CRUD (Thêm, Sửa, Xóa, Xem) danh mục phẳng - Loại sản phẩm (create) #137
    4. Xây dựng chức năng CRUD (Thêm, Sửa, Xóa, Xem) danh mục phẳng - Loại sản phẩm (edit) #138
    5. Xây dựng chức năng CRUD (Thêm, Sửa, Xóa, Xem) danh mục phẳng - Loại sản phẩm (delete) #139
    6. Xây dựng danh mục Sản phẩm có chức năng upload hình ảnh - Index #75
    7. Lưu đồ Upload file từ Client lên Server #2229
    8. Xây dựng danh mục Sản phẩm có chức năng upload hình ảnh - Create #108
    9. Xây dựng danh mục Sản phẩm có chức năng upload hình ảnh - Edit #87
    10. Xây dựng danh mục Sản phẩm có chức năng upload hình ảnh - Delete #88
    11. Xây dựng danh mục Sản phẩm có chức năng upload nhiều Hình ảnh cùng lúc #9259
    12. Xây dựng danh mục Sản phẩm có chức năng upload hình ảnh - Bổ sung menu vào sidebar #104
    13. Xây dựng chức năng xuất biểu mẫu và In ấn trực tiếp trên web #78
    14. Xây dựng chức năng xuất Excel #76
    15. Xây dựng chức năng xuất PDF #77
    16. Tạo chức năng Đăng nhập #1870
    17. Lưu đồ Kiểm tra ràng buộc dữ liệu (Validation) #2205
    18. Kiểm tra ràng buộc dữ liệu (Validation) phía Client #2206
    19. Kiểm tra ràng buộc dữ liệu (Validation) phía Server #2207
    20. Bài tập tổng hợp - Tạo các chức năng Backend cho trang web đọc Truyện Tranh và Tiểu Thuyết Online sử dụng Laravel framework #9312
  10. AngularJS 7
    1. AngularJS là gì? Cài đặt AngularJS và cú pháp sử dụng AngularJS #95
    2. Cách mô hình kiến trúc MVC vận hành trong AngularJS #96
    3. Cách sử dụng AngularJS Controller, Scope #98
    4. Cách sử dụng AngularJS Directive #97
    5. Cách sử dụng AngularJS Event #100
    6. Cách sử dụng AngularJS Filter #99
    7. Cách sử dụng AngularJS Validation #101
  11. Dự án thực tế mẫu - Trang web bán hàng trực tuyến - Thiết kế Frontend sử dụng AngularJS 11
    1. Thiết kế bố cục (layouts) cho giao diện Frontend #80
    2. Tích hợp AngularJS vào framework Laravel #102
    3. Tạo giao diện trang chủ (index) #81
    4. Tạo giao diện trang Giới thiệu (about) #109
    5. Tạo giao diện trang Liên hệ (contact) #114
    6. Tạo trang danh sách Sản phẩm (product) #110
    7. Tạo nút Thêm vào giỏ hàng cho từng sản phẩm (add-to-cart) #112
    8. Tạo trang Chi tiết Sản phẩm (product-detail) #111
    9. Tạo giỏ hàng (cart sidebar) #82
    10. Tạo trang thanh toán (checkout) #83
    11. Tạo đơn hàng và gởi mail xác nhận #103
  12. Bonus 9
    1. Đa ngôn ngữ trong Laravel #115
    2. Tạo báo cáo với biểu đồ ChartJS #116
    3. Tạo khung chọn Ngày tháng cho dự án #2431
    4. Tạo các trang thông báo lỗi tương ứng STATUS CODE #117
    5. Kiểm tra ứng dụng với tunnel ảo NGROK #2418
    6. Phân trang trong Laravel #2436
    7. Bổ sung khung xem Hình ảnh trước khi upload (preview image upload) #2439
    8. Tạo API trong Laravel và sử dụng AngularJS để hiển thị giao diện #9385
    9. Cách tự động sinh Ảnh nhiều kích cỡ (Automatic resize image) khi upload file Ảnh #9970
  13. Danh sách Đồ án xây dựng trang web sử dụng LARAVEL 2
    1. Đăng ký Đồ án Laravel #1188
    2. Hướng dẫn Nộp Đồ án Laravel #9417
  14. Tài liệu tham khảo 3
    1. Kho sách, nguồn tài liệu tham khảo #1313
    2. SourceCode Dự án mẫu #113
    3. Xây dựng chức năng Tìm kiếm theo nhiều tiêu chí bằng Model Eloquent #9426
  15. Thực hiện Đồ án 1
    1. Lộ trình Thực hiện đồ án Web Laravel #7883

Bài học trước Bài học tiếp theo