Giả sử có một thực thể trong Symfony2 rằng có một trường bestfriend
, mà là một thực thể User
được lựa chọn từ một danh sách các User
thực thể đáp ứng một yêu cầu phức tạp. Bạn có thể làm cho lĩnh vực này trong một hình thức bằng cách xác định rằng nó là một entity field type, ví dụ:Entity lập bản đồ trong một lĩnh vực lựa chọn Symfony2 với optgroup
$builder->add('bestfriend', 'entity', array(
'class' => 'AcmeHelloBundle:User',
'property' => 'username',
));
Hình thức này được trả lại như một <select>
, trong đó mỗi một trong các giá trị hiển thị ở dạng:
<option value="user_id">user_username</option>
Vì vậy, người ta sẽ hiển thị trường bằng cách sử dụng các thẻ <optgroup>
để làm nổi bật tính năng đặc biệt của bạn bè.
Tiếp theo nguyên tắc này, tôi đã tạo ra một loại lĩnh vực, cụ thể là FriendType
, tạo ra các mảng sự lựa chọn như trong this answer, được trả lại như sau:
$builder->add('bestfriend', new FriendType(...));
Lớp FriendType
tạo ra một <select>
tổ chức với cùng <option>
s nhưng được tổ chức theo <optgroup>
s.
Ở đây tôi gặp sự cố! Khi gửi biểu mẫu, khung công tác nhận ra rằng trường người dùng không phải là một cá thể của Người dùng, nhưng nó là một số nguyên. Làm cách nào để cho Symfony2 hiểu rằng int đã truyền là id của một thực thể thuộc kiểu User?
Thành thật mà nói, tôi không hiểu câu hỏi của bạn, nhưng tôi nghĩ bạn có thể giải quyết nó bằng DataTransfor mer – nikita2206
@ nikita2206 Xem xét câu trả lời của riêng tôi. – JeanValjean