Mỗi khi start 1 dự án sử dụng Yii2 (1 PHP framework), các bạn cuder 3S đã phát ngán với việc phải config, migration thủ công cho từng dự án?
Các công việc được lặp đi lặp lại: nào là config RBAC (Role Based Access Control), rồi lại config RESTful Web Services, config i18n (Internationalization), config separate session/cookies cho backend/frontend, xong rồi lại phát triển giao diện cho trang quản lý user, quản lý log, v.v…
Các chức năng:
- Theme AdminLTE cho backend: đẹp + open source (MIT licensed)
- Các ngôn ngữ: tiếng Anh, tiếng Việt, tiếng Nhật…
- Quản lý các bản dịch
- Action đổi ngôn ngữ + behavior đổi locale dựa theo ngôn ngữ của browser
- Các màn hình đăng nhập, đăng ký, profile…
- Xác thực OAuth
- Quản lý User
- RBAC sẵn với các quyền: khách, user thường, quản lý và admin
- Hỗ trợ migrate RBAC
- Các component quản lý nội dung: bài viết, thể loại, trang tĩnh, menu động, carousel động, text block
- Component lưu giữ Key-value
- Màn hình cài đặt Ứng dụng (dựa trên component KeyStorage)
- Module RESTful API được config sẵn
- Component quản lý file + widget upload file
- Tự động tạo thumbnail bằng lib trntv/yii2-glide
- Command Bus with queued and async tasks support trntv/yii2-command-bus
- Các behaviors hữu dụng (GlobalAccessBehavior, CacheInvalidateBehavior, MaintenanceBehavior)
- Giao diện quản lý log Yii2
- Component timeline Ứng dụng
- Component chế độ bảo trì
- Giao diện xem thông tin hệ thống
- WYSIWYG Text Editor: Imperavi Reactor
- Widget Ace Editor
- Config sẵn môi trường Test
- Nén và nối tài nguyên (JS, CSS)
- và nhiều chức năng nữa mà tôi lười liệt kê
Các bước cài cắm:
- Tải source về, hiện tại đang để tại path sau:
https://drive.google.com/a/3si.vn/file/d/0BzBKjMsydtYMQ1VkU1NwU3dtZEE/view?usp=sharing
Chú ý đăng nhập với tài khoản 3si.vn - Tạo DB:
Name: 3si-yii2 (demo thế, sau này vào product thích đổi thành gì cũng được, miễn là sửa trong file config theo)
Character set: utf8 -- UTF-8 Unicode
Collation: utf8_general_ciDùng PhpMyAdmin hoặc Navicat để import file DB tại đường dẫn db/3si-yii2.sql vào DB vừa tạo
- Chỉnh sửa config DB trong source
Đường dẫn: common/config/base.php
Đoạn code:Thay bằng config DB của các bạn.
- Chỉnh sửa virtual host của Apache
Tôi dùng XAMPP trên Windows để phát triển, file cần chỉnh sửa ở đường dẫn sau: C:\xampp\apache\conf\extra\httpd-vhosts.conf
Nội dung thêm vào: - Chỉnh sửa file hosts
- Chỉnh sửa file php.ini của PHP
- Restart Apache
Đường dẫn: C:\Windows\System32\drivers\etc\hosts
Nội dung thêm vào:
Đường dẫn: C:\xampp\php\php.ini
Un-comment/Modify/Add (tùy vào dòng đấy có hay chưa) các dòng sau:
Các component:
Đăng nhập vào hệ thống từ các URL đã define trong virtual host:Đường dẫn đến Frontend: http://3si-yii2.dev
Đường dẫn đến Backend: http://3si-yii2.dev/admin
Username/Password: admin/3si@12345
KeyStorage
Key storage dùng để lưu trữ nhiều loại thông tin khác nhau dựa trên key-value. Ví dụ như cài đặt Ứng dụng chẳng hạn. Giá trị có thể thay đổi thông qua api hoặc component CRUD trong backend.
Chế độ Bảo trì
Component này sẽ bắt tất cả các request tới, set cho nó HTTP header trả lại là (503, “Retry After”) và hiển thị 1 message bảo trì. Các tùy chọn config khác có thể tìm thấy trong class tương ứng.
3si-yii2 được cài đặt sẵn để bật chế độ bảo trì lên nếu giá trị frontend.maintenance trong KeyStorage được set thành true
Timeline
Các Widget config được trong backend
Carousel
- Tạo carousel trong backend.
- Sử dụng:
DbText
- Tạo text block trong backend.
- Sử dụng:
DbMenu
- Tạo menu trong backend.
- Sử dụng:
Các Widget khác
Grid
EnumColumn
API
3si-yii2 có module REST API được config và sẵn sàng sử dụng. Các bạn có thể truy cập nó từ link http://3si-yii2.dev/api/v1. Ví dụ GET users:
Kết quả nhận về:
MultiModel
common\base\MultiModel – class phục vụ cho việc xử lý nhiều model trong 1 tại controller:
Tại view:
Gen code với Gii
Các bạn đã quen gen code với Gii? Đừng lo, nó ở đây: