Khóa học lập trình Zend Framework của ZendVN là một khóa học về PHP framework nâng cao và chuyên sâu. Sau khi hoàn tất khóa học này các bạn sẽ có một nền tảng vững chắc về lập trình hướng đối tượng PHP, hiểu được cấu trúc mô hình MVC trong các PHP framework hiện nay, hiểu rõ về các thư viện trong Zend Framework và có thể tự nghiên cứu các thư viện PHP framework bất kỳ dựa trên nền tảng của khóa học Zend Framework.
Học Zend Framework - Khóa học lập trình Zend FrameworkKhanhPham
Học Zend Framework - Khóa học lập trình Zend Framework
Để tìm hiểu kỹ hơn các bạn hãy truy cập:
Website: www.zend.vn
Facebook: https://www.facebook.com/zendvngroup
Youtube: https://www.youtube.com/watch?v=8XT6cCq6eyY
Tài liệu lập trình PHP từ căn bản đến nâng caoZendVN
Khóa học lập trình PHP chuyên nghiệp version 2015 của ZendVN là một khóa học PHP Online. Khóa học PHP này cung cấp cho các bạn kiến thức về lập trình PHP từ căn bản đến nâng cao. Các bạn sẽ tự học PHP thông qua các video mà ZendVN đã xây dựng sẵn theo giáo trình PHP của ZendVN biên soạn.
ZendVN bảo đảm đây là một trong những khóa học PHP có chất lượng tốt nhất hiện nay ở Việt Nam. Khóa học PHP này được dựa trên những kinh nghiệm thực tế trong quá trình làm việc của ZendVN với các dự án lớn của nước ngoài.
Bài 3 Lập trình PHP (phần 1) - Giáo trình FPTMasterCode.vn
Giới thiệu về cơ sở dữ liệu quan hệ và MySQL
Giới thiệu về cơ sở dữ liệu quan hệ
Các kiểu dữ liệu thông dụng trong MySQL
Các câu lệnh dùng để thao tác dữ liệu trong SQL
Giới thiệu MySQL
Sử dụng phpMyAdmin
Sử dụng PHP với MySQL
Sử dụng PHP để làm việc với MySQL
Lấy dữ liệu từ tập kết quả
Mô hình MVC
Giới thiệu về mô hình MVC
Hướng dẫn viết hàm
Hướng dẫn chuyển hướng yêu cầu
Nhắc lại bài cũ
Giới thiệu về cơ sở dữ liệu quan hệ và MySQL
Giới thiệu về cơ sở dữ liệu quan hệ
Các kiểu dữ liệu thông dụng trong MySQL
Các câu lệnh dùng để thao tác dữ liệu trong SQL
Giới thiệu MySQL
Sử dụng phpMyAdmin
Sử dụng PHP với MySQL
Sử dụng PHP để làm việc với MySQL
Lấy dữ liệu từ tập kết quả
Mô hình MVC
Giới thiệu về mô hình MVC
Hướng dẫn viết hàm
Hướng dẫn chuyển hướng yêu cầu
Bài 2 Các kỹ thuật lập trình MySQL với PHP nâng cao - Xây dựng ứng dụng webMasterCode.vn
Phân biệt khi nào sử dụng PDO và mở rộng
mysqli
Cách sử dụng câu lệnh dựng sẵn khi làm việc với
PDO
Cách sử dụng chế độ hiển thị lỗi
Cách sử dụng mysqli trong cả hai hướng lập
trình hướng đối tượng và hướng cấu trúc
Học Zend Framework - Khóa học lập trình Zend FrameworkKhanhPham
Học Zend Framework - Khóa học lập trình Zend Framework
Để tìm hiểu kỹ hơn các bạn hãy truy cập:
Website: www.zend.vn
Facebook: https://www.facebook.com/zendvngroup
Youtube: https://www.youtube.com/watch?v=8XT6cCq6eyY
Tài liệu lập trình PHP từ căn bản đến nâng caoZendVN
Khóa học lập trình PHP chuyên nghiệp version 2015 của ZendVN là một khóa học PHP Online. Khóa học PHP này cung cấp cho các bạn kiến thức về lập trình PHP từ căn bản đến nâng cao. Các bạn sẽ tự học PHP thông qua các video mà ZendVN đã xây dựng sẵn theo giáo trình PHP của ZendVN biên soạn.
ZendVN bảo đảm đây là một trong những khóa học PHP có chất lượng tốt nhất hiện nay ở Việt Nam. Khóa học PHP này được dựa trên những kinh nghiệm thực tế trong quá trình làm việc của ZendVN với các dự án lớn của nước ngoài.
Bài 3 Lập trình PHP (phần 1) - Giáo trình FPTMasterCode.vn
Giới thiệu về cơ sở dữ liệu quan hệ và MySQL
Giới thiệu về cơ sở dữ liệu quan hệ
Các kiểu dữ liệu thông dụng trong MySQL
Các câu lệnh dùng để thao tác dữ liệu trong SQL
Giới thiệu MySQL
Sử dụng phpMyAdmin
Sử dụng PHP với MySQL
Sử dụng PHP để làm việc với MySQL
Lấy dữ liệu từ tập kết quả
Mô hình MVC
Giới thiệu về mô hình MVC
Hướng dẫn viết hàm
Hướng dẫn chuyển hướng yêu cầu
Nhắc lại bài cũ
Giới thiệu về cơ sở dữ liệu quan hệ và MySQL
Giới thiệu về cơ sở dữ liệu quan hệ
Các kiểu dữ liệu thông dụng trong MySQL
Các câu lệnh dùng để thao tác dữ liệu trong SQL
Giới thiệu MySQL
Sử dụng phpMyAdmin
Sử dụng PHP với MySQL
Sử dụng PHP để làm việc với MySQL
Lấy dữ liệu từ tập kết quả
Mô hình MVC
Giới thiệu về mô hình MVC
Hướng dẫn viết hàm
Hướng dẫn chuyển hướng yêu cầu
Bài 2 Các kỹ thuật lập trình MySQL với PHP nâng cao - Xây dựng ứng dụng webMasterCode.vn
Phân biệt khi nào sử dụng PDO và mở rộng
mysqli
Cách sử dụng câu lệnh dựng sẵn khi làm việc với
PDO
Cách sử dụng chế độ hiển thị lỗi
Cách sử dụng mysqli trong cả hai hướng lập
trình hướng đối tượng và hướng cấu trúc
Bài 1 Lập trình website theo mô hình MVC - Xây dựng ứng dụng webMasterCode.vn
Cách tổ chức mô hình MVC
Ưu điểm của mô hình MVC trong việc phát triển
ứng dụng web
Cách tạo và gọi hàm theo phong cách mô hình
MVC
Phân biệt khi nào nên forward hoặc chuyển
hướng yêu cầu HTTP
Giới thiệu về framework CakePHP
Giao trinh PHP nang cao - Kỹ thuật đệ qui trong PHP (CH003 Bài 3)KhanhPham
Giao trinh PHP nang cao - Kỹ thuật đệ qui trong PHP (CH003 Bài 3)
Để tìm hiểu kỹ hơn các bạn hãy truy cập:
Website: www.zend.vn
Facebook: facebook.com/zendvngroup
Tài liệu Zend Framework 2 - Cài đặt và cấu hình Zend Framework 2 - Bài 2KhanhPham
Tài liệu Zend Framework 2 - Cài đặt và cấu hình Zend Framework 2 - Bài 2. Hướng dẫn cách cài đặt, cấu hình ZF2.
Để tìm hiểu kỹ hơn các bạn hãy truy cập;
Website: www.zend.vn
Facebook: https://www.facebook.com/zendvngroup
Lập trình Android cơ bản bằng tiếng Việt,Lap trinh Android co ban bang tieng Viet, Học lập trình Android, Hoc lap trinh Android | Trung tâm đào tạo lập trình Android Trí Tuệ Việt là trung tâm đào tạo Android uy tín, chất lượng tại tpchm, hà nội
Bài 1 Lập trình website theo mô hình MVC - Xây dựng ứng dụng webMasterCode.vn
Cách tổ chức mô hình MVC
Ưu điểm của mô hình MVC trong việc phát triển
ứng dụng web
Cách tạo và gọi hàm theo phong cách mô hình
MVC
Phân biệt khi nào nên forward hoặc chuyển
hướng yêu cầu HTTP
Giới thiệu về framework CakePHP
Giao trinh PHP nang cao - Kỹ thuật đệ qui trong PHP (CH003 Bài 3)KhanhPham
Giao trinh PHP nang cao - Kỹ thuật đệ qui trong PHP (CH003 Bài 3)
Để tìm hiểu kỹ hơn các bạn hãy truy cập:
Website: www.zend.vn
Facebook: facebook.com/zendvngroup
Tài liệu Zend Framework 2 - Cài đặt và cấu hình Zend Framework 2 - Bài 2KhanhPham
Tài liệu Zend Framework 2 - Cài đặt và cấu hình Zend Framework 2 - Bài 2. Hướng dẫn cách cài đặt, cấu hình ZF2.
Để tìm hiểu kỹ hơn các bạn hãy truy cập;
Website: www.zend.vn
Facebook: https://www.facebook.com/zendvngroup
Lập trình Android cơ bản bằng tiếng Việt,Lap trinh Android co ban bang tieng Viet, Học lập trình Android, Hoc lap trinh Android | Trung tâm đào tạo lập trình Android Trí Tuệ Việt là trung tâm đào tạo Android uy tín, chất lượng tại tpchm, hà nội
This document discusses the role and responsibilities of a technical team lead. It begins by defining a technical team lead as a leader responsible for a development team who spends at least 30% of their time writing code. It then outlines the typical activities of a technical team lead, including coding (40% of time), design (30%), integration (15%), and other miscellaneous tasks (15%). It discusses the skills needed for the role, such as people skills, communication skills, and technical skills. It also provides advice on how to transition into a technical team lead role, such as getting the necessary skills, finding a mentor, and understanding different organizational structures.
This document discusses key performance indicators (KPIs) for technical lead positions. It provides examples of KPIs, outlines steps for creating KPIs for technical leads, discusses common mistakes to avoid, and emphasizes linking KPIs to strategy and empowering employees. The document recommends visiting kpi123.com for additional KPI samples, performance appraisal forms, review methods and phrases tailored to technical leads.
JAVA là một ngôn ngữ lập trình hướng đối tượng được sử dụng rất phổ biến trên thế giới, JAVA được sử dụng trong việc xây dựng và phát triển các ứng dụng phần mềm, các ứng dụng web, các ứng dụng trên thiết bị di động, …
Tài liệu được trích từ khóa học Lập trình Java tại ZendVN www.zend.vn
Vietnamese version translated from this famous slide
http://www.slideshare.net/nbykmatsui/ss-55961899?utm_content=buffer50ae1&utm_medium=social&utm_source=facebook.com&utm_campaign=buffer
Khóa học Quản lý mã nguồn với GIT là khóa học được xây dựng bởi chính những kinh nghiệm làm việc và quản lý mã nguồn của ZendVN với các project thực tế.
Khóa học: https://zendvn.com/quan-ly-ma-nguon-voi-git/
PHP 7 is a major release that provides significant performance improvements over PHP 5, making PHP 7 as fast as or faster than HHVM. It removes deprecated features and provides new features like scalar type hints, return type hints, the spaceship and coalesce operators, anonymous classes, and group use declarations. Developers are encouraged to test their applications on PHP 7 to take advantage of these improvements and prepare for the future of PHP.
Khóa học lập trình jQuery Master của ZendVN là một khóa học được nâng cấp từ khóa học thiết kế Web. Khóa học jQuery master này đem đến cho các bạn toàn bộ kiến thức nền tảng của lập trình website như HTML, CSS, javascript, jQuery framework, Bootstrap framework, NodeJS… ZendVN đảm bảo khóa học JQuery sẽ đem lại cho các bạn kiến thức rộng nhất và toàn diện nhất của lĩnh vực thiết kết web hiện đại.
Demo ứng dụng được xây dựng hoàn chỉnh frontend và backend trên nền tảng Zend Framework 2.x.
Tài liệu được trích từ khóa học lập trình Zend Framework 2.x tại ZendVN www.zend.vn
Joomla CMS là một hệ thống quản lý dữ liệu được đánh giá rất cao hiện nay, Joomla rất dễ sử dụng để xây dựng một website và rất thân thiện với người sử dụng. Nhưng để lập trình tạo ra các thành phần mở rộng như Component, Module, Plugin, Template… cho nó thì không đơn giản một chút nào vì cấu trúc Joomla CMS khá phức tạp. Nó làm cho các lập trình viên tốn rất nhiều thời gian để nghiên cứu và sửa chữa một vấn đề nào đó trong hệ thống Joomla.
Tài liệu được trích từ khóa học Lập trình Joomla 2.5 tại ZendVN www.zend.vn
Smartbiz_He thong MES nganh may mac_2024juneSmartBiz
Cách Hệ thống MES giúp tối ưu Quản lý Sản xuất trong ngành May mặc như thế nào?
Ngành may mặc, với đặc thù luôn thay đổi theo xu hướng thị trường và đòi hỏi cao về chất lượng, đang ngày càng cần những giải pháp công nghệ tiên tiến để duy trì sự cạnh tranh. Bạn đã bao giờ tự hỏi làm thế nào mà những thương hiệu hàng đầu có thể sản xuất hàng triệu sản phẩm với độ chính xác gần như tuyệt đối và thời gian giao hàng nhanh chóng? Bí mật nằm ở hệ thống Quản lý Sản xuất (MES - Manufacturing Execution System).
Hãy cùng khám phá cách hệ thống MES đang cách mạng hóa ngành may mặc và mang lại những lợi ích vượt trội như thế nào.
7. • .htaccess là một file cấu hình có phần mở rộng là htaccess, nó có thể thay đổi các cấu hình do
Apache quản lý (httpd.conf) và có tác dụng trong thư mục chứa nó và các thư mục con của thư mục
chứa nó.
• .htaccess có một sự ảnh hưởng rất lớn đến sự hoạt động của website do đó cần đặc biệt quan tâm
đến file cấu hình này về vấn đề bảo mật, lỗi cú pháp, sự ảnh hưởng, …
• Apache sẽ tìm và thực thi tất cả những file .htaccess , do vậy sẽ ảnh hưởng đến tốc độ của website
chỉ nên dùng .htaccess trong trường hợp bạn không có quyền cấu hình trên httpd.conf của
Apache
Kiến thức tổng quan
8. 1. Hạn chế IP truy cập vào website
2. Điều hướng thông báo lỗi
3. Thiết lập tập tin thực thi mặc định
4. Hạn chế view thư mục
5. Hạn chế truy cập vào tập tin
6. Tạo mật khẩu cho thư mục tập tin
7. Chống chia sẻ tài nguyên
8. Thiết lập kích thước tập tin upload
9. Rewrite URL
…
9.
10.
11. • Abstract Class (Lớp trừu tượng) là một Class dùng để định nghĩa các thuộc tính và
phương thức chung cho các class khác
• Abstract Class không cho phép khởi tạo đối tượng từ class đó.
• Abstract method không cho phép định nghĩa rõ cách hoạt động của method, chỉ dừng
lại ở khai báo method
• Từ khóa abstract được dùng để định nghĩa một Lớp trừu tượng.
12. • Interface không phải là class, đây là một mẫu giao diện quy định thêm một số thuộc
tính và phương thức cho một class nào đó
• Interface không cho phép định nghĩa rõ cách hoạt động của method, chỉ dừng lại ở
khai báo method
• Việc định nghĩa các method này sẽ được thực hiện ở class con
13. • Abstract class là một class Interface không là một class
• Abstract class mỗi method không bắt buộc phải được định nghĩa ở lớp con
Interface mỗi method bắt buộc phải được định nghĩa ở lớp con
• Abstract class mỗi lớp con chỉ kế thừa từ một class abstract, một class abstract có
nhiều class con Interface mỗi lớp con kế thừa từ một hoặc nhiều Interface, một
Interface có nhiều class con
• Abstract class mỗi phương thức abstract có thể ở trạng thái protected hoặc public
Interface mỗi phương thức chỉ ở trạng thái public
14. • Khi một đối tượng gọi một phương thức, mà phương thức này chưa được định
nghĩa trong class, thì phương thức __call() được gọi để thay thế
• Khi một đối tượng gọi một phương thức static, mà phương thức này chưa được
định nghĩa trong class, thì phương thức __callstatic() được gọi để thay thế
• __call() và __callstatic() phải được khai báo ở trạng thái public
15. • Lambda là một hàm ẩn danh (hàm không có tên), chỉ đơn giản là các hàm sử dụng
một lần, có thể được định nghĩa vào bất cứ lúc nào, và thường được gắn với một
biến
• Closure tương tự như Lambda, ngoài ra nó có thể truy cập các biến bên ngoài
phạm vị của nó
16. • Anonymous functions hàm ẩn danh (hàm không có tên)
• Trong lập trình chức năng Lambda được đánh giá khá cao, bởi vì:
o Truyền như một tham số vào hàm khác
o Được gán cho biến
o Được tạo và sử dụng trong thời gian thực thi
17. • Closure tương tự như Lambda, ngoài ra nó có thể truy cập các biến bên ngoài
phạm vị của nó
18. • Design pattern cung cấp các "mẫu thiết kế", các giải pháp để giải quyết các vấn đề
chung, thường gặp trong lập trình.
• Có khá nhiều các mẫu design pattern, mỗi loại có thể được dùng để giải quyết một
vấn đề nào đó, tuy nhiên đặc điểm chung là tăng tính dễ bảo trì của phần mềm
19. • Creational Pattern: Abstract Factory, Factory Method, Singleton, Builder, Prototype
sử dụng một số thủ thuật để khởi tạo đối tượng mà không nhìn thấy từ khóa new
• Structural Pattern: Adapter, Bridge, Composite, Decorator, Facade, Proxy và
Flyweight thiết lập, định nghĩa quan hệ giữa các đối tượng.
• Behavioral Pattern: Interpreter, Template Method, Chain of Responsibility, Command,
Iterator, Mediator, Memento, Observer, State, Strategy và Visitor. thực hiện các
hành vi của đối tượng.
20. • What ? Đảm bảo chỉ duy nhất môt thực thể của một class được tạo ra
• When? Khi cần tạo ra một class mà class đó chỉ có một đối tượng duy nhất và có
thể truy cập đến đối tượng đó ở bất kỳ nơi đâu
21. • Decorator thuộc nhóm Structural pattern
• Decorator pattern cho phép thêm method hoặc property của 1 đối tượng trong lúc
chương trình thực thi
22. • Tạo một đối tượng mà không cần thiết chỉ ra một cách chính xác lớp nào sẽ sẽ
được sử dụng để tạo đối tượng đó.
• Giảm bớt sự phụ thuộc của việc tạo đối tượng với logic của ứng dụng
• Tăng tính dễ đọc và bảo trì của ứng dụng
23. • Dependency Injection (DI) giúp giảm sự phụ thuộc giữa các lớp, tạo ra sự linh hoạt
cao và tính dễ bảo trì cho ứng dụng
• Lợi ích khi sử dụng DI: giảm sự phụ thuộc giữa các class, tăng khả năng dùng lại và
khả năng dễ đọc của mã nguồn, tạo cho ứng dụng tính mềm dẻo và khả năng nâng
cấp bảo trì trở nên đơn giản và nhanh chóng hơn
24. ZendVN Công ty tin học
Taxi Vinasun
Vietnam airline
đi công tác
điện thoại đặt vé
khởi hành 20h ngày 20/05
điện thoại đặt xe
khởi hành 19h ngày 20/05
25. • Thay đổi hãng Taxi
• Thay đổi hãng máy bay
• Thay đổi hình thức đặt vé
26. ZendVN Công ty tin học
Taxi Vinasun
Vietnam airline
đi công tác vào ngày
21/05/2014
Phòng quản lý
27. Tránh xung đột đối với tên lớp, tên hàm và tên hằng số giữa tập tin khác nhau
Làm cho mã nguồn ngắn gọn và dễ đọc hơn
Namespaces đơn
Namespaces phân cấp
Multi namespace
Sử dụng hằng số __NAMESPACE__
Truy xuất class, function, constant khi sử dụng namespace
Sử dụng từ khoá use đặt alias cho namespace
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41. Tập tin / Thư mục Thông tin / Chức năng
config Folder chứa các cấu hình
data Folder chứa các tài file dữ liệu được tạo bởi ứng dụng
module Folder chứa các module
public Folder chứa các tập tin thư mục dùng chung
vendor Folder chứa thư viện
42. Tập tin / Thư mục Thông tin / Chức năng
config Folder chứa các cấu hình cho module
language Folder chứa các tài nguyên ngôn ngữ
src/Application Folder chứa các controller và model của module hiện tại
view/application Folder chứa view cho các controller
view/error Folder chứa view cho các thông báo lỗi
view/layout Folder chứa các layout
43.
44. config/application.config.php
System configuration
Cấu hình được chuyển đến trình ứng dụng, và sau đó
là Module manager để kích hoạt hệ thống
Được sử dụng ngay lập tức, không kết hợp và không
bị ghi đè với bất kỳ cấu hình nào khác
ModuleManager đọc các cấu hình của các Module
Application configuration
Thứ tự đọc là thứ tự được khai báo trong System
Configuration
Kết hợp các phần tử service_manager ở mỗi module
Kết hợp cấu hình được trả bởi Module::getConfig()
Tập tin cấu hình được thiết lập ở
config_glob_paths được kết hợp lại dựa trên
thứ tự được khai báo
ConfigListener kết hợp các cấu hình
và gửi về ServiceManager
45.
46.
47.
48.
49.
50.
51. Filter Class Input Output
ZendI18nFilterAlnum abc !@#$^&*( dec 12 ()*() 12 abcdec1212
ZendI18nFilterAlpha abc !@#$^&*( dec 12 ()*() 12 abcdec
ZendFilterBaseName www.zend.vn/public/test.html test.html
ZendFilterDir www.zend.vn/public/test.html www.zend.vn/public/
ZendFilterCallback Gọi các phương thức xử lý khác đã được xây dựng sẵn
ZendFilterDigits Zend Framework 2.34 !@# 234
ZendFilterStringToLower Khóa học Zend Framework 2 khóa học zend framework 2
ZendFilterStringToUpper Khóa học Zend Framework 2 KHÓA HỌC ZEND FRAMEWORK 2
52. Filter Class Input Output
ZendFilterStringTrim Zend Framework 2 Zend Framework 2
ZendFilterStripTags
<h3>Khóa học lập trình <a
href="www.zend.vn">Zend Framework
2</a></h3>
Khóa học lập trình Zend Framework 2
ZendFilterCompress Abc.txt Abc.zip
ZendFilterDecompress Abc.zip Abc.txt
ZendFilterPregReplace Sử dụng biểu thức chính quy trong Filter
ZendFilterHtmlEntities This is a test " <> This is a test " <>
129. Tùy biến thông báo lỗi
$validator->setMessages(array(
ZendValidatorStringLength::TOO_SHORT =>
"Giá trị đầu vào <b>%value%</b> phải lớn hơn %min% ký tự",
ZendValidatorStringLength::TOO_LONG =>
"Giá trị đầu vào <b>%value%</b> phải nhỏ hơn %max% ký tự",
));
$validator = new ZendVNValidatorStringLength(array(
'max' => 9,
'min' => 7
));
133. Thao tác upload với một tập tin
if($this->request->isPost()){
$upload = new ZendFileTransferAdapterHttp();
$fileInfo= $upload->getFileInfo();
$fileSize= $upload->getFileSize();
$fileName= $upload->getFileName();
$upload->setDestination(FILES_PATH . '/photo');
$upload->receive();
}
134. Thao tác upload với nhiều tập tin
if($this->request->isPost()){
$upload = new ZendFileTransferAdapterHttp();
// Mảng lưu trữ thông tin của một file upload
$file01Info= $upload->getFileInfo('my_file_01');
$upload->setDestination(FILES_PATH . '/photo', 'my_file_01');
$upload->receive('my_file_01');
}
135. Kiểm tra điều kiện upload tập tin
if($this->request->isPost()){
$upload = new ZendFileTransferAdapterHttp();
$upload->addValidator('Extension', true, array('png', 'jpg'), 'picture');
$upload->addValidator('Size', false, array('min' => '10Kb', 'max' => '8mb'), 'zip');
$upload->setDestination(FILES_PATH . '/photo', 'my_file_01');
$upload->setDestination(FILES_PATH . '/zip', 'my_file_02');
$fileName = $upload->getFileName();
foreach($fileName as $key => $value){
if($upload->isValid($key)){
$upload->receive($key);
}else{
$messages= $upload->getMessages();
echo current($messages);
}
}
}
182. Xây dựng cấu trúc tập tin và thư mục
Các tập tin application.config.php, global.php,
local.php, để đơn giản trả về array rỗng
Truy cập vào index.php để kiểm tra kết quả
187. • Xây dựng cấu trúc tập tin và thư mục như hình vẽ
• Xây dựng controller và tập tin view của action
index trong controller đó
• Xây dựng tập tin Module.php chưa sử dụng
autoload_classmap.php
• Xây dựng module.config.php
191. Cập nhật phương thức getConfig trong tập tin Module.php
Cấu trúc thư mục
192. Cấu trúc thư mục
Cập nhật phương thức getAutoloaderConfig trong
tập tin Module.php
193. Cấu trúc thư mục
Thay đổi layout đối với tập tin view
194. 1. Sử dụng .htaccess
2. Tạo thêm tập tin index.php “ảo”
3. Cấu hình lại virtualhost
(keyword: zend framework 2 remove public from url)
195. 1. Đặt folder Zendvn cùng cấp với folder Zend
2. Điều chỉnh namespace cho phù hợp (phân biệt hoa – thường)
3. Kiểm tra một số class đã hoạt động tốt hay chưa
196.
197. Full document & source: https://github.com/zendframework/ZendDeveloperTools
202. 1. Cơ sở dữ liệu lưu trữ thông tin group
2. Kết nối cơ sơ dữ liệu trong dự án
3. Hiển thị danh sách group
4. Phân trang
5. Sắp xếp danh sách
6. Lọc danh sách theo trạng thái của group
7. Lọc danh sách theo giá trị được tìm kiếm
203. 8. Thay đổi trạng thái (status) của một group
9. Thay đổi trạng thái (status) của nhiều group
10.Thay đổi thứ tự sắp xếp (ordering) của một hoặc nhiều group
11.Xóa một hoặc nhiều group
12.Xem thông tin chi tiết của một group
13.Thêm mới group (add)
14.Cập nhật thông tin của một group nào đó (edit)
204. 1. Cơ sở dữ liệu lưu trữ thông tin user
2. Xây dựng trang index với order, status (multi), paginator, delete (multi), search
(keyword, status, group)
3. Xây dựng formAction với các lưu ý:
Thêm mới và chỉnh sửa thông tin của một group
Điều kiện username và email duy nhất
Chỉnh sửa thông tin nhưng không thay đổi mật khẩu
205. Download & document: http://phpimageworkshop.com/
Tìm hiểu các thao tác trên hình ảnh: Cropping, Filter, Flip, Opacity, Resizing,
Rotating, Writing
Tạo watermark cho hình ảnh
Lưu hình ảnh
206. Cập nhật lại giao diện hiển thị danh sách người dùng
Upload và lưu trữ hình ảnh gốc mà người dùng đã upload
Resize hình ảnh (tỉ lệ ?)
Xử lý trường hợp người dùng cập nhật thông tin user nhưng không thay đổi avatar
Lưu ý trường hợp xóa tài khoản của một người dùng cần xóa luôn cả hình ảnh của
người dùng.
207. 1. Download, cài đặt và nhúng CKEditor vào ứng dụng
2. Tùy chỉnh giao diện cho CKEditor: language, size, color, resize
3. Tùy chỉnh toolbar cho CKEditor: item, button, plugin, …
4. Cấu hình CKEditor với ràng buộc dữ liệu
5. Cài đặt plugin và skin cho CKEditor
6. Tích hợp CKFinder vào CKEditor
208. 1. Tích hợp CKEditor vào project Zend 2
2. Kiểm tra dữ liệu hợp lệ
3. Lọc và hiển thị dữ liệu
209. Quản trị hệ thống menu (category) đa cấp
Chuyên ngành
Kinh tế
Tạp chí
Tiếng anh
…
Doanh nhân Khởi nghiệp Lãnh đạo
Nhân sự
211. Root0 23
Quản trị hệ thống menu (category) đa cấp
Chuyên
ngành
1 2 Kinh tế3 12 Tạp chí13 20 Tiếng
anh21 22
Doanh
nhân
4 5 Khởi
nghiệp
6 7 Lãnh
đạo
8 11 IT14 17 Sức
khỏe
18 19
Nhân
sự
9 10 Echip15 16
213. • Hiển thị toàn bộ cây menu (category) có phân cấp
• Hiển thị cây menu (category) theo level
• Hiển thị nhánh cây menu (category)
• Hiển thị đường đi đến một nút nào đó (breadcrumb)
214. Root0 1
Root0 3
A1 2
Nút gốc Nút gốc có 1 con
Root
Nút gốc có 2 con
0
1
5
4A B2 3
215. Root0 7
B3 4 C5 6
New? ?
A1 2
4 trường hợp thêm node vào cây
216. Root0 7
B3 4 C5 6
New? ?
A1 2
4 trường hợp thêm node vào cây
left right
before
after
217. Root0 9
B3 6 C7 8
New6 7
A1 2
4 trường hợp thêm node vào cây (right)
right
B14 5
218. Root0 9
B3 6 C7 8
New6 7
A1 2
4 trường hợp thêm node vào cây (right)
right
8 9 10
11
B14 5
219. Root0 9
B3 6 C7 8
New6 7
A1 2
4 trường hợp thêm node vào cây (right)
right
8 9 10
11Left = Left + 2
(left > ParentRight)
Right = Right + 2
(right >= ParentRight)
Left = ParentRight
Right = ParentRight + 1
Level = ParentLevel + 1
Parent = ParentID
B14 5
220. Root0 9
B3 6 C7 8
New6 7
A1 2
4 trường hợp thêm node vào cây (left)
left
B14 5
221. Root0 9
B3 6 C7 8
New4 5
A1 2
4 trường hợp thêm node vào cây (left)
left
8 9 10
11
B14 5
6 7
222. Root0 9
B3 6 C7 8
New4 5
A1 2
4 trường hợp thêm node vào cây (left)
left
8 9 10
11Left = Left + 2
(left > ParentLeft)
Right = Right + 2
(right > ParentLeft)
Left = ParentLeft + 1
Right = ParentLeft + 2
Level = ParentLevel + 1
Parent = ParentID
B14 5
6 7
223. Root0 7
B3 4 C5 6
New3 4
A1 2
4 trường hợp thêm node vào cây (before)
8
before
224. Root0 7
B3 4 C5 6
New3 4
A1 2
4 trường hợp thêm node vào cây (before)
before
6 7 8
9
5
225. Root0 7
B3 4 C5 6
New3 4
A1 2
4 trường hợp thêm node vào cây (before)
before
6 7 8
9
Left = Left + 2
(left >= BrotherLeft)
Right = Right + 2
(right > BrotherLeft)
Left = BrotherLeft
Right = BrotherLeft + 1
Level = BrotherLevel
Parent = BrotherParent
5
226. Root0 7
B3 4
C5 6
New5 6
A1 2
4 trường hợp thêm node vào cây (after)
after
227. Root0 7
B3 4
C5 6
New5 6
A1 2
4 trường hợp thêm node vào cây (after)
after
7 8
9
228. Root0 7
B3 4
C5 6
New5 6
A1 2
4 trường hợp thêm node vào cây (after)
after
7 8
9
Left = Left + 2
(left > BrotherRight)
Right = Right + 2
(right > BrotherRight)
Left = BrotherRight + 1
Right = BrotherRight + 2
Level = BrotherLevel
Parent = BrotherParent
230. Tách nhánh trên cây (bước 1)
Root0 17
B3 6 C7 8 E15 16D9 14A1 2
B14 5 D110 11 D212 13
0
1
left = left – nodeMove[left]
right = right – nodeMove[right]
nodeMove[left] <= left <= nodeMove[right]
0
-1
231. Tách nhánh trên cây (bước 2)
Root0 17
C7 8 E15 16D9 14A1 2
D110 11 D212 13
TotalNode= (right – left + 1)/2
Left = left – totalNode*2
left > nodeMove[right]
Right = right – totalNode*2
right > nodeMove[right]
3 4
6
5 10 12
7 8 9
11
13
B3 6
B14 5
0
1
0
-1
232. Kết quả tách nhánh trên cây
Root0 13
C3 4 E11 12D5 10A1 2
B0 0
B11 -1
D16 7 D28 9
left right
before after
233. Thêm nhánh vào cây ở vị trí right (tình huống)
Root0 13
C3 4 E11 12D5 10A1 2
B0 0
B11 -1
D16 7 D28 9
right
234. Thêm nhánh vào cây ở vị trí right (kết quả)
Root0 13
C3 4 E11 12D5 10A1 2
B0 0
B11 -1
D16 7 D28 9
right
10 13
11 12
14 15 16
17
235. Thêm nhánh vào cây ở vị trí right (thuật toán node trên cây)
Root0 13
C3 4
E11 12
D5 10A1 2
B0 0
B11 -1
D16 7 D28 9
right
10 13
11 12
14
15 16
17
Left = Left + totalNode*2
(left > ParentRight & right > 0)
Right = Right + totalNode*2
(right >= ParentRight)
236. Thêm nhánh vào cây ở vị trí right (thuật toán node trên nhánh)
Root0 13
C3 4
E11 12
D5 10A1 2
B0 0
B11 -1
D16 7 D28 9
right
10 13
11 12
14
15 16
17
Level = level –
nodeMoveLevel + ParentLevel +
1
(right <= 0)
nodeMove[parent] = ParentID
Left = left + ParentRight
(right <= 0)
Right = right + ParentRight +totalNode*2 - 1
(right <= 0)
237. Thêm nhánh vào cây ở vị trí left (tình huống)
Root0 13
C3 4 E11 12D5 10A1 2
B0 0
B11 -1
D16 7 D28 9
left
238. Thêm nhánh vào cây ở vị trí left (kết quả)
Root0 13
C3 4 E11 12D5 10A1 2
B0 0
B11 -1
D16 7 D28 9
left
12 1310 11
14
15 16
17
6
7
9
8
239. Thêm nhánh vào cây ở vị trí left (thuật toán node trên cây)
Root0 13
C3 4 E11 12D5 10A1 2
B0 0
B11 -1
D16 7 D28 9
left
12 1310 11
14
15 16
17
6
7
9
8
Left = Left + totalNode*2
(left > ParentLeft & right > 0)
Right = Right + totalNode*2
(right > ParentLeft)
240. Thêm nhánh vào cây ở vị trí left (thuật toán node trên nhánh)
Root0 13
C3 4 E11 12D5 10A1 2
B0 0
B11 -1
D16 7 D28 9
left
12 1310 11
14
15 16
17
6
7
9
8
Left = left + ParentLeft + 1
(right <= 0)
Right = right + ParentLeft + 1 +totalNode*2 - 1
(right <= 0)
Level = level –
nodeMoveLevel + ParentLevel +
1
(right <= 0)
nodeMove[parent] = ParentID
241. Thêm nhánh vào cây ở vị trí before (tình huống)
Root0 13
C3 4 E11 12D5 10A1 2 B0 0
B11 -1 D16 7 D28 9
before
242. Thêm nhánh vào cây ở vị trí before (kết quả)
Root0 13
C3 4 E11 12D5 10A1 2 B0 0
B11 -1 D16 7 D28 9
before
5
6 7
8 9
10 11
14
12 13
15 16
17
243. Thêm nhánh vào cây ở vị trí before (thuật toán node trên cây)
Root0 13
C3 4 E11 12D5 10A1 2 B0 0
B11 -1 D16 7 D28 9
before
5
6 7
8 9
10 11
14
12 13
15 16
17
Left = Left + totalNode*2
(left >= selectionLeft & right > 0)
Right = Right + totalNode*2
(right > selectionLeft)
244. Thêm nhánh vào cây ở vị trí before (thuật toán node trên nhánh)
Root0 13
C3 4 E11 12D5 10A1 2 B0 0
B11 -1 D16 7 D28 9
before
5
6 7
8 9
10 11
14
12 13
15 16
17Left = left + selectionLeft
(right <= 0)
Right = right + selectionLeft + totalNode*2 - 1
(right <= 0)
Level = level –
nodeMoveLevel + selectionLevel
(right <= 0)
nodeMove[parent] =
selectionParent
245. Thêm nhánh vào cây ở vị trí after (tình huống)
Root0 13
C3 4 E11 12D5 10A1 2 B0 0
B11 -1D16 7 D28 9
after
246. Thêm nhánh vào cây ở vị trí after (kết quả)
Root0 13
C3 4 E11 12D5 10A1 2 B0 0
B11 -1D16 7 D28 9
after
11
12
14
13
16
17
15
247. Thêm nhánh vào cây ở vị trí after (thuật toán node trên cây)
Root0 13
C3 4 E11 12D5 10A1 2 B0 0
B11 -1D16 7 D28 9
after
11
12
14
13
16
17
15
Left = Left + totalNode*2
(left > selectionRight & right > 0)
Right = Right + totalNode*2
(right > selectionRight )
248. Thêm nhánh vào cây ở vị trí after (thuật toán node trên nhánh)
Root0 13
C3 4 E11 12D5 10A1 2 B0 0
B11 -1D16 7 D28 9
after
11
12
14
13
16
17
15
Level = level – nodeMoveLevel +
selectionLevel
(right <= 0)
nodeMove[parent] = selectionParent
Left = left + selectionRight + 1
(right <= 0)
Right = right + selectionRight + totalNode*2
(right <= 0)
249. Di chuyển node (move up)
Root0 17
B3 6 C7 8 E15 16D9 14A1 2
B14 5 D110 11 D212 13
Di chuyển node C ra phía trước
anh em liền kề bên trái
250. Di chuyển node (move down)
Root0 17
B3 6 C7 8 E15 16D9 14A1 2
B14 5 D110 11 D212 13
Di chuyển node C ra phía sau anh
em liền kề bên phải
251. Cập nhật thông tin của node
Root0 17
B3 6 C7 8 E15 16D9 14A1 2
B14 5 D1110 11 D212 13
Cập nhật thông tin:
- Chỉ cập nhật giá trị của node
- Thay đổi cha của node
252. Xóa node trên cây (xóa toàn bộ nhánh)
Root0 17
B3 6 C7 8 E15 16D9 14A1 2
B14 5 D110 11 D212 13
9 10
11
254. 1. Hiển thị danh sách category có phân cấp cha con
2. Hiển thị ordering
3. Sắp xếp và lọc danh sách category: column, status, keyword, level
4. Thay đổi trạng thái của một hoặc nhiều category: inactive, active
5. Xóa một hoặc nhiều category
6. Di chuyển category: move up, move down
7. Cập nhật thông tin của một category: add, edit
255. 1. Nhận xét: cách xây dựng chức năng quản lý sách hoàn toàn tương tự như chức
năng quản lý user
2. Đối với trang danh sách các quyển sách cần bổ sung: show special, filter special,
change special, show price, show sale off
3. Đối với trang thêm mới (cập nhật) thông tin quyển sách cần bổ sung: special, price,
sale off, customize description