Các bố cục (layouts) sử dụng trong phần Frontend
Thông thường, với mỗi trang web, chúng ta sẽ có các bố cục (layouts) khác nhau dành cho các trang khác nhau. Ví dụ, chúng ta sẽ thiết kế với phần Frontend sẽ có 1 bố cục (layouts) như sau:1. Bố cục (layout) toàn màn hình (full page)
Đây là bố cục chúng ta sử dụng cho phần lớn các chức năng trong Frontend, bao gồm các thành phần:
Header
: đây là phần đầu của trang web, thường sẽ chứa thanhnavbar
để điều hướng đến các chức năng.Content
: đây là vùng nội dung chính của trang, thường sẽ thay đổi tùy theo chức năng.Footer
: đây là phần chân trang
Cách thiết kế các bố cục trên sử dụng INCLUDE / REQUIRE trong PHP
- Cần xem lại cấu trúc thư mục dự án trong bài "Khởi tạo cấu trúc thư mục dự án PHP".
Phân tách các thành phần trong layout thành các file riêng để sử dụng lại
Theo các bố cục (layouts) trên, chúng ta có các thành phần có thể tái sử dụng lại nhiều lần nhưheader
, footer
. Chỉ phần content
sẽ thay đổi tùy theo chức năng mong muốn.
Chúng ta tiến hành như sau:
Step 1: download thư viện giao diện Bootstrap, JQuery và thư viện icon Font Awesome 4
Bootstrap
- Truy cập trang chủ: https://getbootstrap.com/docs/4.5/getting-started/download/ hoặc download trực tiếp version 4.5 Bootstrap
- Giải nén, chép vào thư mục
/assets/vendor/bootstrap
Jquery
- Bootstrap sử dụng cú pháp Jquery để viết. Nên chúng ta sẽ cần thư viện Jquery đi kèm.
- Truy cập: https://jquery.com/ hoặc "Click vào đây" (phiên bản mới nhất 3.4.1)
- Lưu vào trong
/assets/vendor/jquery/jquery.min.js
Font Awesome 4
- Truy cập: https://fontawesome.com/v4.7.0/get-started/
- Lưu vào trong
/assets/vendor/font-awesome
=> Cấu trúc thư mục sau khi download thư viện
project-nentang +---bai-tap | \bai-1 | \bai-2 | ... | +---assets | \---vendor | \---bootstrap <-- thư viện bootstrap | ... | \---jquery <-- thư viện jquery | ... | \---font-awesome <-- thư viện icon font-awesome | ...
Step 2: tạo file quản lý Các Style CSS dùng chung cho toàn bộ các trang trong Frontend
- Tạo file
frontend/layouts/styles.php
- Lưu ý: các liên kết sử dụng trong CSS là URL, với / tương đương địa chỉ gốc (là domain đang sử dụng).
- Nội dung file:
<!-- Bootstrap CSS --> <link rel="stylesheet" href="/assets/vendor/bootstrap/css/bootstrap.min.css" type="text/css" /> <!-- Font awesome --> <link rel="stylesheet" href="/assets/vendor/font-awesome/css/font-awesome.min.css" type="text/css" /> <!-- Custom css - Các file css do chúng ta tự viết --> <link rel="stylesheet" href="/assets/frontend/css/app.css" type="text/css" />
Step 3: tạo file quản lý Các Script JS dùng chung cho toàn bộ các trang trong Frontend
- Tạo file
frontend/layouts/scripts.php
- Lưu ý: các liên kết sử dụng trong Scripts là URL, với / tương đương địa chỉ gốc (là domain đang sử dụng).
- Nội dung file:
<!-- jQuery JS --> <script src="/assets/vendor/jquery/jquery.min.js"></script> <!-- Bootstrap JS --> <script src="/assets/vendor/bootstrap/js/bootstrap.min.js"></script>
=> Cấu trúc thư mục sau khi tạo các file quản lý Style CSS và Script JS
project-nentang +---bai-tap | \bai-1 | \bai-2 | ... | +---assets | \---vendor | \---bootstrap | ... | \---jquery | ... | \---font-awesome | ... | \---frontend | \---css | app.css <-- file CSS dùng cho frontend | +---frontend | \---layouts | styles.php <-- file quản lý việc include các thư viện CSS | scripts.php <-- file quản lý việc include các thư viện Javasciprt
Step 4: tạo cấu trúc thư mục để quản lý các thành phần này
Tạo thư mục/frontend/layouts/partials
và các file tương ứng các thành phần như sau:
project-nentang +---bai-tap | \bai-1 | \bai-2 | ... | +---assets | \---vendor | \---bootstrap <-- thư viện bootstrap | ... | \---jquery <-- thư viện jquery | ... | \---font-awesome <-- thư viện icon font-awesome | ... | \---frontend | \---css | app.css <-- file CSS dùng cho frontend | +---frontend | \---layouts | styles.php <-- file quản lý việc include các thư viện CSS | scripts.php <-- file quản lý việc include các thư viện Javasciprt | | \---partials | footer.php <-- giao hiện HTML phần footer dùng chung cho frontend | header.php <-- giao hiện HTML phần header dùng chung cho frontend
- Nội dung file
frontend/layouts/partials/header.php
:
<nav class="navbar navbar-expand-lg navbar-dark bg-dark shadow"> <a class="navbar-brand" href="/">Nền tảng</a> <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <div class="collapse navbar-collapse" id="navbarSupportedContent"> <ul class="navbar-nav mr-auto"> <li class="nav-item active"> <a class="nav-link" href="/index.php">Trang chủ Frontend</a> </li> </ul> <ul class="navbar-nav px-3 ml-auto"> <li class="nav-item text-nowrap"> <a class="nav-link" href="/dang-nhap.php">Đăng nhập</a> </li> </ul> </div> </nav>
- Nội dung file
frontend/layouts/partials/footer.php
:
<footer class="footer mt-auto py-3 bg-dark text-white"> <div class="container-fluid"> <div class="row"> <div class="col-md-2"></div> <div class="col-md-10"> <span>Bản quyền © bởi <a href="https://nentang.vn">Nền Tảng</a> - <script>document.write(new Date().getFullYear());</script>.</span> <span class="text-muted">Hành trang tới Tương lai</span> </div> </div> </div> </footer>
Mục lục
Chương trình học
- Cơ sở dữ liệu
-
Thiết kế Cơ sở dữ liệu
12
- Mô hình dữ liệu Quan niệm CDM (Conceptual Data Model) #10551
- Mô hình dữ liệu Vật lý PDM (Physical Data Model) #10560
- [Bài tập 1.1] - Thực hành thiết kế sơ đồ CDM trang web Thương mại điện tử #10552
- [Bài tập 1.2] - Thực hành thiết kế sơ đồ PDM (ER) trang web Thương mại điện tử #10571
- [Bài tập 1.3] - Thực hành thiết kế sơ đồ CDM hệ thống Quản trị Thiết bị / Phòng học #10554
- [Bài tập 1.4] - Thực hành thiết kế sơ đồ PDM (ER) hệ thống Quản trị Thiết bị / Phòng học #10572
- [Bài tập 1.5] - Thực hành thiết kế sơ đồ CDM hệ thống Kênh phát nhạc #10556
- [Bài tập 1.6] - Thực hành thiết kế sơ đồ PDM (ER) hệ thống Kênh phát nhạc #10573
- [Bài tập 1.7] - Thực hành thiết kế sơ đồ CDM trang web Quản lý Truyện tranh / Tiểu thuyết #10569
- [Bài tập 1.8] - Thực hành thiết kế sơ đồ PDM (ER) trang web Quản lý Truyện tranh / Tiểu thuyết #10574
- [Bài tập 1.9] - Thực hành thiết kế sơ đồ CDM hệ thống Quản trị Nhân sự #10575
- [Bài tập 1.10] - Thực hành thiết kế sơ đồ PDM (ER) hệ thống Quản trị Nhân sự #10558
- Hệ quản trị Cơ sở dữ liệu MySQL - Tổng quan, khái niệm về database 2
- Hệ quản trị Cơ sở dữ liệu MySQL - Các lệnh tạo cấu trúc (schema database) 2
-
Hệ quản trị Cơ sở dữ liệu MySQL - Tạo cấu trúc database với HeidiSQL
9
- Tạo cơ sở dữ liệu (database) NetaShop - Sử dụng HeidiSQL #8587
- Tạo bảng (table) Danh mục phẳng - Sử dụng HeidiSQL #8582
- Tạo bảng (table) Danh mục có liên kết khóa ngoại (có quan hệ) - Sử dụng HeidiSQL #8597
- Tạo bảng (table) theo quan hệ Nhiều - Nhiều (N-N) - Sử dụng HeidiSQL #8619
- Tạo bảng (table) có Quan hệ Tự thân (self foreign key) - Sử dụng HeidiSQL #8664
- [Bài tập 2.1] - Thực hành tạo cấu trúc database với PDM (ER) trang web Thương mại điện tử #10598
- [Bài tập 2.2] - Thực hành tạo cấu trúc database với PDM (ER) trang web Quản lý Truyện tranh / Tiểu thuyết #10603
- Cách export (dump) cơ sở dữ liệu MySQL bằng HeidiSQL #8343
- [Bài tập 2.3] - Thực hành tạo cấu trúc database với PDM (ER) trang web Quản lý Bóng đá #11614
-
Hệ quản trị Cơ sở dữ liệu MySQL - Các lệnh cập nhật dữ liệu (Insert - Update - Delete)
5
- Câu lệnh Thêm dữ liệu (INSERT) #2663
- Câu lệnh Cập nhật dữ liệu (UPDATE) #2665
- Câu lệnh Xóa dữ liệu (DELETE) #2664
- [Bài tập 2.3] - Thực hành thao tác các câu lệnh cập nhật dữ liệu trang web Thương mại điện tử #10605
- [Bài tập 2.4] - Thực hành thao tác các câu lệnh cập nhật dữ liệu trang web Quản lý Truyện tranh / Tiểu thuyết #10625
- Hệ quản trị Cơ sở dữ liệu MySQL - Các lệnh truy vấn dữ liệu (Select query data) 3
-
Ngôn ngữ lập trình PHP - Cú pháp căn bản
13
- Sơ đồ vận hành của một Website #1311
- Trình diễn (render) dữ liệu Đơn giản ra giao diện (HTML, CSS, JS) sử dụng PHP #8696
- Trình diễn (render) dữ liệu Danh sách Array ra giao diện (HTML, CSS, JS) sử dụng PHP #9564
- [Bài tập] - Tạo các trang web PHP cho phép Khách truy cập tương ứng từ địa chỉ web URL #10651
- [Bài tập] - Khai báo các biến dữ liệu Đơn giản trong PHP và Render dữ liệu Đơn giản ra giao diện (HTML, CSS, JS) sử dụng PHP #10669
- [Bài tập] - Khai báo các biến dữ liệu Mảng Array và Render dữ liệu Danh sách Array ra giao diện (HTML, CSS, JS) sử dụng PHP #10670
- [Bài tập] - Xét kết quả tốt nghiệp của Sinh viên dựa theo thang điểm 10 sử dụng PHP #10695
- [Bài tập] - Làm quen với vòng lặp FOR / FOREACH / WHILE / DO WHILE trong PHP #10704
- Hàm (function) trong PHP #10713
- Các hàm (functions) xử lý Ngày tháng (datetime) trong PHP #10727
- Các hàm (functions) kiểm tra Biến (Variable) và các hàm kiểm tra Kiểu dữ liệu (data types) của biến trong PHP #10728
- [Bài tập] - Làm quen với hàm (function) trong PHP #10721
- [Bài tập] - Làm quen và sử dụng các hàm (functions) thông dụng có sẵn trong PHP #10753
-
Ngôn ngữ lập trình PHP - Xử lý Request và Response
6
- Thu thập và Xử lý dữ liệu bằng Yêu cầu GET (Request GET) trong PHP #8704
- Thu thập và Xử lý dữ liệu bằng Yêu cầu POST (Request POST) trong PHP #8705
- [Bài tập] - Tạo Form Đăng nhập và truyền dữ liệu bằng Request POST trong PHP #10771
- [Bài tập] - Tạo Form Liên hệ và truyền dữ liệu bằng Request POST trong PHP #10772
- [Bài tập] - Tạo trang Danh sách Sinh viên và truyền dữ liệu chức năng Sửa/Xóa bằng Request GET trong PHP #10773
- Bài tập tạo Form Tìm kiếm Thu thập và Xử lý dữ liệu bằng Yêu cầu GET (Request GET) trong PHP #8717
- Ngôn ngữ lập trình PHP - Thiết kế bố cục (layouts) cho trang web 3
-
Ngôn ngữ lập trình PHP - Thao tác với Cơ sở dữ liệu MySQL
16
- Quy trình (workflow) xử lý thao tác với cơ sở dữ liệu MySQL trong PHP #9623
- Tạo kết nối đến CSDL MySQL trong PHP #8116
- Thực thi câu lệnh SELECT trong PHP #8124
- Thực thi câu lệnh INSERT trong PHP #8118
- Thực thi câu lệnh INSERT với FORM trong PHP #8126
- Thực thi câu lệnh UPDATE trong PHP #8120
- Thực thi câu lệnh UPDATE với FORM trong PHP #8133
- Thực thi câu lệnh DELETE trong PHP #8122
- Thực thi câu lệnh DELETE với FORM trong PHP #8130
- [Bài tập] - Tạo trang web hiển thị Danh sách các Truyện tranh/Tiểu thuyết hiện có trong Database ra ngoài Trang chủ - Thực thi câu lệnh SELECT trong PHP #10803
- [Bài tập] - Tạo trang web hiển thị Chi tiết của một Truyện tranh/Tiểu thuyết - Thực thi câu lệnh SELECT trong PHP #10807
- [Bài tập] - Tạo trang web hiển thị Nội dung của một Chương/Tập cụ thể thuộc một Truyện tranh/Tiểu thuyết nào đó - Thực thi câu lệnh SELECT trong PHP #10812
- [Bài tập] - Tạo trang web Quản lý hiển thị Danh sách Truyện tranh - Index #10819
- [Bài tập] - Tạo trang web Quản lý hiển thị Danh sách Tiểu thuyết - Index #10822
- [Bài tập] - Tạo trang web Quản lý Thêm mới Truyện tranh - Create #10831
- [Bài tập] - Tạo trang web Quản lý Thêm mới Tiểu thuyết - Create #10836
- Đồ án cuối khóa 6
Các bài học
Bài học trước Bài học tiếp theo
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
- Cơ sở dữ liệu
-
Thiết kế Cơ sở dữ liệu
12
- Mô hình dữ liệu Quan niệm CDM (Conceptual Data Model) #10551
- Mô hình dữ liệu Vật lý PDM (Physical Data Model) #10560
- [Bài tập 1.1] - Thực hành thiết kế sơ đồ CDM trang web Thương mại điện tử #10552
- [Bài tập 1.2] - Thực hành thiết kế sơ đồ PDM (ER) trang web Thương mại điện tử #10571
- [Bài tập 1.3] - Thực hành thiết kế sơ đồ CDM hệ thống Quản trị Thiết bị / Phòng học #10554
- [Bài tập 1.4] - Thực hành thiết kế sơ đồ PDM (ER) hệ thống Quản trị Thiết bị / Phòng học #10572
- [Bài tập 1.5] - Thực hành thiết kế sơ đồ CDM hệ thống Kênh phát nhạc #10556
- [Bài tập 1.6] - Thực hành thiết kế sơ đồ PDM (ER) hệ thống Kênh phát nhạc #10573
- [Bài tập 1.7] - Thực hành thiết kế sơ đồ CDM trang web Quản lý Truyện tranh / Tiểu thuyết #10569
- [Bài tập 1.8] - Thực hành thiết kế sơ đồ PDM (ER) trang web Quản lý Truyện tranh / Tiểu thuyết #10574
- [Bài tập 1.9] - Thực hành thiết kế sơ đồ CDM hệ thống Quản trị Nhân sự #10575
- [Bài tập 1.10] - Thực hành thiết kế sơ đồ PDM (ER) hệ thống Quản trị Nhân sự #10558
- Hệ quản trị Cơ sở dữ liệu MySQL - Tổng quan, khái niệm về database 2
- Hệ quản trị Cơ sở dữ liệu MySQL - Các lệnh tạo cấu trúc (schema database) 2
-
Hệ quản trị Cơ sở dữ liệu MySQL - Tạo cấu trúc database với HeidiSQL
9
- Tạo cơ sở dữ liệu (database) NetaShop - Sử dụng HeidiSQL #8587
- Tạo bảng (table) Danh mục phẳng - Sử dụng HeidiSQL #8582
- Tạo bảng (table) Danh mục có liên kết khóa ngoại (có quan hệ) - Sử dụng HeidiSQL #8597
- Tạo bảng (table) theo quan hệ Nhiều - Nhiều (N-N) - Sử dụng HeidiSQL #8619
- Tạo bảng (table) có Quan hệ Tự thân (self foreign key) - Sử dụng HeidiSQL #8664
- [Bài tập 2.1] - Thực hành tạo cấu trúc database với PDM (ER) trang web Thương mại điện tử #10598
- [Bài tập 2.2] - Thực hành tạo cấu trúc database với PDM (ER) trang web Quản lý Truyện tranh / Tiểu thuyết #10603
- Cách export (dump) cơ sở dữ liệu MySQL bằng HeidiSQL #8343
- [Bài tập 2.3] - Thực hành tạo cấu trúc database với PDM (ER) trang web Quản lý Bóng đá #11614
-
Hệ quản trị Cơ sở dữ liệu MySQL - Các lệnh cập nhật dữ liệu (Insert - Update - Delete)
5
- Câu lệnh Thêm dữ liệu (INSERT) #2663
- Câu lệnh Cập nhật dữ liệu (UPDATE) #2665
- Câu lệnh Xóa dữ liệu (DELETE) #2664
- [Bài tập 2.3] - Thực hành thao tác các câu lệnh cập nhật dữ liệu trang web Thương mại điện tử #10605
- [Bài tập 2.4] - Thực hành thao tác các câu lệnh cập nhật dữ liệu trang web Quản lý Truyện tranh / Tiểu thuyết #10625
- Hệ quản trị Cơ sở dữ liệu MySQL - Các lệnh truy vấn dữ liệu (Select query data) 3
-
Ngôn ngữ lập trình PHP - Cú pháp căn bản
13
- Sơ đồ vận hành của một Website #1311
- Trình diễn (render) dữ liệu Đơn giản ra giao diện (HTML, CSS, JS) sử dụng PHP #8696
- Trình diễn (render) dữ liệu Danh sách Array ra giao diện (HTML, CSS, JS) sử dụng PHP #9564
- [Bài tập] - Tạo các trang web PHP cho phép Khách truy cập tương ứng từ địa chỉ web URL #10651
- [Bài tập] - Khai báo các biến dữ liệu Đơn giản trong PHP và Render dữ liệu Đơn giản ra giao diện (HTML, CSS, JS) sử dụng PHP #10669
- [Bài tập] - Khai báo các biến dữ liệu Mảng Array và Render dữ liệu Danh sách Array ra giao diện (HTML, CSS, JS) sử dụng PHP #10670
- [Bài tập] - Xét kết quả tốt nghiệp của Sinh viên dựa theo thang điểm 10 sử dụng PHP #10695
- [Bài tập] - Làm quen với vòng lặp FOR / FOREACH / WHILE / DO WHILE trong PHP #10704
- Hàm (function) trong PHP #10713
- Các hàm (functions) xử lý Ngày tháng (datetime) trong PHP #10727
- Các hàm (functions) kiểm tra Biến (Variable) và các hàm kiểm tra Kiểu dữ liệu (data types) của biến trong PHP #10728
- [Bài tập] - Làm quen với hàm (function) trong PHP #10721
- [Bài tập] - Làm quen và sử dụng các hàm (functions) thông dụng có sẵn trong PHP #10753
-
Ngôn ngữ lập trình PHP - Xử lý Request và Response
6
- Thu thập và Xử lý dữ liệu bằng Yêu cầu GET (Request GET) trong PHP #8704
- Thu thập và Xử lý dữ liệu bằng Yêu cầu POST (Request POST) trong PHP #8705
- [Bài tập] - Tạo Form Đăng nhập và truyền dữ liệu bằng Request POST trong PHP #10771
- [Bài tập] - Tạo Form Liên hệ và truyền dữ liệu bằng Request POST trong PHP #10772
- [Bài tập] - Tạo trang Danh sách Sinh viên và truyền dữ liệu chức năng Sửa/Xóa bằng Request GET trong PHP #10773
- Bài tập tạo Form Tìm kiếm Thu thập và Xử lý dữ liệu bằng Yêu cầu GET (Request GET) trong PHP #8717
- Ngôn ngữ lập trình PHP - Thiết kế bố cục (layouts) cho trang web 3
-
Ngôn ngữ lập trình PHP - Thao tác với Cơ sở dữ liệu MySQL
16
- Quy trình (workflow) xử lý thao tác với cơ sở dữ liệu MySQL trong PHP #9623
- Tạo kết nối đến CSDL MySQL trong PHP #8116
- Thực thi câu lệnh SELECT trong PHP #8124
- Thực thi câu lệnh INSERT trong PHP #8118
- Thực thi câu lệnh INSERT với FORM trong PHP #8126
- Thực thi câu lệnh UPDATE trong PHP #8120
- Thực thi câu lệnh UPDATE với FORM trong PHP #8133
- Thực thi câu lệnh DELETE trong PHP #8122
- Thực thi câu lệnh DELETE với FORM trong PHP #8130
- [Bài tập] - Tạo trang web hiển thị Danh sách các Truyện tranh/Tiểu thuyết hiện có trong Database ra ngoài Trang chủ - Thực thi câu lệnh SELECT trong PHP #10803
- [Bài tập] - Tạo trang web hiển thị Chi tiết của một Truyện tranh/Tiểu thuyết - Thực thi câu lệnh SELECT trong PHP #10807
- [Bài tập] - Tạo trang web hiển thị Nội dung của một Chương/Tập cụ thể thuộc một Truyện tranh/Tiểu thuyết nào đó - Thực thi câu lệnh SELECT trong PHP #10812
- [Bài tập] - Tạo trang web Quản lý hiển thị Danh sách Truyện tranh - Index #10819
- [Bài tập] - Tạo trang web Quản lý hiển thị Danh sách Tiểu thuyết - Index #10822
- [Bài tập] - Tạo trang web Quản lý Thêm mới Truyện tranh - Create #10831
- [Bài tập] - Tạo trang web Quản lý Thêm mới Tiểu thuyết - Create #10836
- Đồ án cuối khóa 6
Bài học trước Bài học tiếp theo
Menu Tiện ích
Menu Hướng dẫn Học tập
❤🧡💛💚💙💜 Học là phải THỰC HÀNH ❤🧡💛💚💙💜
Thực hiện các bước tuần tự theo nội dung Bài học nhé!