Symfony form (P2)
Symfony Form (P2) Phần 1 bạn có thể đọc tại đây https://viblo.asia/cuongnv_540/posts/157G5orlRAje Thay đổi các widgets mặc định Trở lại với ví dụ của chúng ta. Với trường Type bạn có thể thấy kiểu dữ liệu là text. Người dùng có thể nhập bất kì thứ gì họ muốn. Như vậy có thể gây khó ...
Symfony Form (P2)
Phần 1 bạn có thể đọc tại đây
https://viblo.asia/cuongnv_540/posts/157G5orlRAje
Thay đổi các widgets mặc định
Trở lại với ví dụ của chúng ta.
- Với trường Type bạn có thể thấy kiểu dữ liệu là text. Người dùng có thể nhập bất kì thứ gì họ muốn. Như vậy có thể gây khó khăn cho việc phân loại.
- Với trường hợp này chúng ta chỉ có thể quy định các kiểu type của job trước và sau đó người dùng sẽ lựa chọn các lựa chọn có sẵn .
- Có nhiều cách để có thể khai báo loạt biến về type_job bạn có thể định nghĩa trong model của job chẳng hạn. Nhưng ở đây tôi sẽ coi như một biến chung của hệ thống và lưu vào app.yml.
- Mặc định khi khởi tạo project thì các application đều có app.yml riêng cho các app đó. Nếu bạn muốn tạo một app.yml chung cho cả project thì bạn tạo trong thư mục config.
- Sau khi tạo file thì bạn tạo biến lưu trữ các giá trị định nghĩa của type_job
- Trên đây là nội dung file config/app.yml. Biến này là sử dụng chung cho các môi trường phát triển nên đặt ở default:.
Chú ý: về biến type_job khi gọi sfConfig::get('app_job_type_job') sẽ trả về array(1 => 'Full time'...) vì app.yml chỉ quản lý đến level lưu trữ thứ 2. Tức là từ lv 2 trở thì chỉ có thể gọi được bằng cách gọi tới lv 2 . rồi từ mảng trả về get lấy dữ liệu.
- Xong công việc chuẩn bị chúng ta sẽ sửa lại widget của trường type.
Khi đó ta có kết quả ở view như sau:
-
Giá trị ở trường type sẽ được set mặc định trùng với giá trị của của trường type của object khởi tạo.
-
Tương tự bạn có thể sửa lại các trường các của form theo ý của bạn sao cho phù hợp.
Tạo mới widget, validator
-
Như đã giới thiệu phần trên. Bạn có thể đổi sử dụng các widget hoặc validator mà symfony cung cấp sẵn một cách linh hoạt cho phù hợp.
-
Nhưng nếu chúng vẫn chưa đủ để đáp ứng nhu cầu của bạn thì sao ? => Vậy thì bạn hãy tự tạo widget, validator cho riêng mình