Symfony Admin Generator
Như ta đã biết frontend application đã đầy đủ tính năng cho việc thao tác người dùng . Bây giờ chúng ta sẽ nói về backend application. Đối với việc xây dựng backend application Symfony cung cấp cho chúng ta công cụ rất hữu ích admin generator . Trong bài viết này tôi xin chia sẽ với các bạn ...
Như ta đã biết frontend application đã đầy đủ tính năng cho việc thao tác người dùng . Bây giờ chúng ta sẽ nói về backend application.
Đối với việc xây dựng backend application Symfony cung cấp cho chúng ta công cụ rất hữu ích admin generator . Trong bài viết này tôi xin chia sẽ với các bạn những kinh nghiệm hữu dụng nhất khi sử dụng Admin generator.
Tạo Backend
Việc đầu tiên là phải tạo backend application. Có thể bạn đã biết cách thực hiện việc này thông qua lệnh </span>generate:app
- 2 thông số đi kèm lệnh generate được dùng để enable tất cả các tính năng bảo mật có sẵn như chống lỗi csrf ... .
Backend application bây giờ đã có thể truy cập ở trên môi trường prod và môi trường dev.
Module Backend
Với frontend application, lệnh propel:generate-module được dùng để tạo module với các thao tác cơ bản CRUD dựa trên model class. Với backend, lệnh propel:generate-admin cũng được dùng để tạo ra backend interface với đầy đủ các chức năng ứng với một model class
Trên đây là 1 ví dụ về việc một module ở backend , module này tạo trên model BetyoloBet
Lệnh trên cũng sẽ tự động tạo router cho mỗi module được khởi tạo
Route cũng có một vài option chúng ta cần chú ý :
- prefix_path: Định nghĩa tiền tố đường dẫn của router (ví dụ đường dẫn của trang edit sẽ có dạng /bet/1/edit).
- column: Định nghĩa cột nào của đối tượng để xúc dụng trong các liên kết URL tham chiếu đến đối tượng đó
- with_wildcard_routes: Khi giao diện quản trị sẽ có nhiều hơn các hoạt động CRUD cổ điển, tùy chọn này cho phép xác định nhiều đối tượng và thu thập các hành động mà không cần chỉnh sửa router.
Admin module có nhiều tính năng hơn các module đơn giản được tạo tự động trong những ngày trước. Mặc dù không phải viết dòng code PHP nào, chúng ta cũng có đầy đủ những tính năng sau:
- Hiển thị danh sách cách đối tượng có phân trang
- Có thể sắp xếp danh sách
- Có thể lọc danh sách
- Có thể tạo, sửa, và xóa đối tượng
- Có thể chọn nhiều đối tượng để cùng thực hiện một thao tác nào đó (batch)
- Form nhập được validation
- Hiển thị Flash messages tới user
- ... và nhiều tính năng khác
Admin generator cung cấp đầy đủ các tính năng bạn cần để tạo một backend interface và đơn giản trong việc cấu hình.
Symfony Cache
Khác hẳn với frontend mặc định khi khởi tạo mudule với Admin generator thì phần module ở backend sẽ hoàn toàn trống .
Bạn có thể thấy class này sẽ thừa kế class autoBetAction . Nó sẽ hoạt đông dựa vào symfony cache. Nếu mở thư mục cache tìm module autoBet ta thấy :
Các action sẵn có sẽ được khai báo ở class autoBet trong thư mục cache .
Các module được tạo ra có thể được cấu hình bằng cách chỉnh sửa file config/generator.ymltrong mỗi module:
Mỗi khi bạn sửa file generator.yml, symfony sẽ tạo lại cache.
Cấu hình Backend
Một module trong admin có thể được cấu hình thông qua file generator.yml. Nội dung cấu hình được tổ chức trong 7 mục:
- actions: Khai báo các action sẽ có ở trang list
- fields: Default configuration for the fields
- list: Configuration for the list
- filter: Configuration for the filters
- form: Configuration for the new/edit form
- edit: Specific configuration for the edit page
- new: Specific configuration for the new page
Chỉnh sửa tiêu đề
Tiêu đề của các mục list, edit, và new của module category có thể được chỉnh sửa thông qua option title:
Kết quả :
Cấu hình các Field
Một field có thể là một cột trong model class, cũng có thể là một giá trị do ta tạo ra.
Cấu hình cho các field nằm trong mục fields.Mục fields sẽ cấu hình cho các field ở tất cả các module, ta có thể cấu hình để thay đổi label của field . Cấu hình trong admin generator dựa trên nguyên lý xếp tầng. Ví dụ, nếu bạn chỉ muốn thay đổi tiêu đề trong trang list, hãy tạo nó ở option fields dưới mục list.
Bất kì cấu hình nào nằm dưới mục fields chính đều có thể được thay đổi bởi cấu hình ở từng trang cụ thể. Luật cấu hình như sau:
- new và edit thừa kế từ form, form lại được thừa kế từ fields
- list thừa kế từ fields
- filter thừa kế từ fields
- Thuộc tính display . option này sẽ chỉ rõ các cột nào được hiển thị :
Đây là kết quả tương ứng :
layout
Trang list có thể được hiển thị trong các layout khác nhau. Mặc định là layout tabular, các cột sẽ được hiển thị trong một bảng. Nhưng với module bet, ta nên sử dụng layout stacked, là layout khác có sẵn trong hệ thống.
Trong layout stacked, mỗi đối tượng được mô tả trong một chuỗi, tạo thành từ giá trị các cột xác định trong option params.
sort
Là administrator, bạn sẽ muốn biết các công việc đưa lên gần đây nhất. Bạn có thể cấu hình để sắp xếp theo một cột nào đó bằng cách thêm option sort
max_per_page
Mặc định, danh sách sẽ được phân trang: 20 công việc mỗi trang. Bạn có thể thay đổi nó với option max_per_page
object_actions
Trong trang list, có thêm một cột chứa các action bạn có thể thực hiện với từng đối tượng riêng biệt. Với module category, cột này là không cần thiết, do đó chúng ra có thể bỏ chúng đi
Chúc bạn thành công !