Mô tả

Có một Khách hàng mong muốn xây dựng 1 trang web cho người dùng có thể đọc Truyện Tranh và Tiểu Thuyết online. Khách hàng muốn có thể tự quản lý được các Truyện Tranh và Tiểu thuyết có trong hệ thống (có thể Thêm mới, Xóa, hoặc hiệu chỉnh thông tin...). Giao diện yêu cầu đơn giản, sáng và đẹp. Đặc biệt, có thể xem trên di động được, vì đa số người dùng sử dụng các thiết bị thông minh như Máy tính bảng, Điện thoại để xem truyện tranh và tiểu thuyết nhiều hơn trên máy tính.

Yêu cầu

1. Về thiết kế Database

  1. Có thể lưu trữ được các thông tin về Truyện như:
    1. Mã số: có thể dùng để tìm kiếm thông tin nhanh sau này
    2. Tên truyện: tên truyện
    3. Hình ảnh đại diện: dùng để làm hình minh họa khi hiển thị dạng danh sách truyện tranh.
    4. Loại truyện: nếu là #1 thì là Tiểu thuyết; nếu là #2 thì là Truyện tranh
    5. Thể loại: truyện cần phân theo các thể loại như Kiếm hiệp, Thiếu nhi, Trinh thám, ... để người dùng dễ dàng phân nhóm, tìm kiếm theo thể loại yêu thích
    6. Tác giả: tên tác giả của truyện
    7. Mô tả ngắn: các dòng mô tả ngắn gọn, xúc tích về truyện.
    8. Ngày đăng truyện
  2. Mỗi 1 Truyện có thể có 1 hoặc nhiều Chương truyện, cần lưu trữ thông tin này. Mỗi chương/tập thì có nội dung dạng chữ (nếu là Tiểu thuyết), các hình ảnh (nếu là Truyện tranh). Mỗi chương/tập thì phải có số, tên chương/tập đó.
    1. Số chương/tập: ví dụ Chương 1, Chương 2, Tập 1, Tập 2...
    2. Tên chương/tập: ví dụ: Chương 1 - Mở đầu; Chương 2 - Trong Tửu Quán Phát Sinh Án Mạng; Tập 1 - Thăm công viên Khủng Long
    3. Nội dung chương/tập: nội dung của chương/tập đó.
  3. Nếu là Truyện loại Truyện Tranh thì có khả năng có rất nhiều hình ảnh trong 1 tập truyện, cần có bảng lưu trữ các hình ảnh thuộc về Chương/Tập đó

Câu 1: Thiết kế database

Schema

Có thể sử dụng thiết kế database sau để thực hiện.
  • Đây là phiên bản database đơn giản, có thể tủy chỉnh thêm theo nhu cầu của các bạn.

Dữ liệu mẫu

  • Table truyen
  • Table chuong
  • Table chuong_hinhanh
Sử dụng MIGRATION và SEED để tạo dữ liệu mẫu.

Câu 2: Về thiết kế Web

  1. Cần có các phân vùng backend rõ ràng cho Người quản trị web (Admin) sử dụng.
  2. Giao diện cần sáng, và thiết kế responsive. Có thể sử dụng Bootstrap để thực hiện

UI cơ bản về Backend

Tự thiết kế theo CRUD (Create - Read - Update - Delete) các chức năng.

Tạo chức năng CRUD cho Danh mục Truyện

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/truyen (GET) -> Laravel sẽ điều hướng đến action index() trong controller Backend\TruyenController.
  • http://tenmiencuaban.com/admin/truyen/create (GET) -> Laravel sẽ điều hướng đến action create() trong controller Backend\TruyenController.
  • http://tenmiencuaban.com/admin/truyen (POST) -> Laravel sẽ điều hướng đến action store() trong controller Backend\TruyenController.
  • http://tenmiencuaban.com/admin/truyen/1/edit (GET) -> Laravel sẽ điều hướng đến action edit() trong controller Backend\TruyenController.
  • http://tenmiencuaban.com/admin/truyen/1 (PUT/PATCH) -> Laravel sẽ điều hướng đến action update() trong controller Backend\TruyenController.
  • http://tenmiencuaban.com/admin/truyen/1 (DELETE) -> Laravel sẽ điều hướng đến action destroy() trong controller Backend\TruyenController.

Tạo chức năng CRUD cho Chương

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/chuong (GET) -> Laravel sẽ điều hướng đến action index() trong controller Backend\ChuongController.
  • http://tenmiencuaban.com/admin/chuong/create (GET) -> Laravel sẽ điều hướng đến action create() trong controller Backend\ChuongController.
  • http://tenmiencuaban.com/admin/chuong (POST) -> Laravel sẽ điều hướng đến action store() trong controller Backend\ChuongController.
  • http://tenmiencuaban.com/admin/chuong/1/edit (GET) -> Laravel sẽ điều hướng đến action edit() trong controller Backend\ChuongController.
  • http://tenmiencuaban.com/admin/chuong/1 (PUT/PATCH) -> Laravel sẽ điều hướng đến action update() trong controller Backend\ChuongController.
  • http://tenmiencuaban.com/admin/chuong/1 (DELETE) -> Laravel sẽ điều hướng đến action destroy() trong controller Backend\ChuongController.
Chức năng này cần phải cho người dùng upload hàng loạt hình ảnh vào table chuong_hinhanh

Gợi ý, hướng dẫn thực hiện

Step 1: download Laravel

Để tiết kiệm thời gian, download phiên bản Laravel 5.5.* (đã bao gồm các thư viện frontend như Bootstrap, JQuery, Jquery Validation, ...) Giải nén và thực hiện code.

Step 2: tham khảo lại các chức năng cũ và copy thực hiện lại chức năng

Chúc các bạn thành công 💚💜💙!