0

Symfony Admin Generator

Symfony Admin Generator

symfony_black_01-300x111

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

Screenshot from 2014-12-22 13:38:21

  • 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

Screenshot from 2014-12-22 13:40:01

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

Screenshot from 2014-12-22 13:55:20

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ạosử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 .Screenshot from 2014-12-22 14:07:30

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 :

Screenshot from 2014-12-22 14:13:04

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:

Screenshot from 2014-12-22 14:14:43

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 listedit, và new của module category có thể được chỉnh sửa thông qua option title:

Screenshot from 2014-12-22 14:32:18

Kết quả :

Screenshot from 2014-12-22 14:33:04

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ừ formform 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ị :

Screenshot from 2014-12-22 14:42:27

Đây là kết quả tương ứng :

Screenshot from 2014-12-22 14:43:10

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 !


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí