Tạo Form trong Symfony
Trong Symfony, thay vì tạo form trong template file, ta có thể sử dụng Symfony Form - một tính năng lớn của Symfony, giúp tăng tốc quá trình xây dựng CRUD, cũng như cung cấp rất nhiều khả năng tuỳ chỉnh cho nhu cầu của bạn.
![](https://blog.pirago.vn/content/images/2021/12/image-70.png)
Tạo Symfony Form với quan hệ ManytoMany
Ở đây ta sẽ tạo ví dụ 1 Symfony Form với quan hệ ManytoMany trên User - Role. 1 user có thể có nhiều role, và nhiều role cũng có thể được giao cho 1 user.
P/S: Xem lại bài trước
Tạo Entity Role
run: symfony console make:entity Role
tạo property 'name'
![](https://blog.pirago.vn/content/images/2021/12/image-72.png)
Tạo Entity User
run: symfony console make:entity User
tạo property 'name' như sau:
![](https://blog.pirago.vn/content/images/2021/12/image-73.png)
Ngoài ra, tạo property 'role' cho quan hệ ManytoMany như sau:
![](https://blog.pirago.vn/content/images/2021/12/image-74.png)
Sau đó, tạo bảng tương ứng trong cơ sở dữ liệu, sử dụng Migrations:
run: symfony console doctrine:migrations:diff
run: symfony console doctrine:migrations:migrate
Sau đó, tạo CRUD cho role:
run: symfony console make:crud Role
![](https://blog.pirago.vn/content/images/2021/12/image-75.png)
Truy cập: https://127.0.0.1:8000/role/ và tự tạo các role, vd như: Admin, Member, User, ..., sẽ được như sau:
![](https://blog.pirago.vn/content/images/2021/12/image-77.png)
tạo CRUD cho user:
run: symfony console make:crud User
![](https://blog.pirago.vn/content/images/2021/12/image-78.png)
Trong file src/Form/UserType.php, sửa lại 'role' dạng EntityType như sau:
![](https://blog.pirago.vn/content/images/2021/12/image-79.png)
P/S: EntityType có nhiều tuỳ chọn khác nhau (radio, select, chekbox, ...). Ở đây ta sẽ chọn dạng checkbox.
Truy cập: https://127.0.0.1:8000/user/new ta sẽ được form dạng như sau:
![](https://blog.pirago.vn/content/images/2021/12/image-82.png)