2012-10-25 19 views
16

Tôi đang sử dụng symfony2 và có biểu mẫu để lưu mối quan hệ của một người dùng với một số quy tắc. Các quy tắc này được xác định bởi người dùng quản trị của công ty. Trong biểu mẫu này, sau khi tôi đã chọn người dùng cập nhật, tôi phải chọn quy tắc mà người dùng này có quyền.Symfony 2 Tạo trường biểu mẫu thực thể với 2 thuộc tính

Vấn đề là tôi có thể có nhiều quy tắc có cùng tên (đó là một thực thể khác) nhưng các giá trị khác nhau. Vì vậy, khi tôi xây dựng selectbox tôi phải hiển thị tên và giá trị như:

  1. Số lượng các mặt hàng - 10
  2. Số lượng các mặt hàng - 20
  3. Giá trị của mặt hàng đó - 200
  4. Giá trị của mục - 500

Nhưng bây giờ tôi chỉ có thể hiển thị mà không có "- $ value" sử dụng mã dưới đây:

$form = $this->createFormBuilder()->add('myinput', 'entity', array(
        'class' => 'myBundle:Rule', 
        'property' => 'childEntity.name', 
        'label' => 'Filas Permitidas', 
        'expanded' => false, 
        'multiple' => true, 
        'choices' => $this->getDoctrine() 
          ->getRepository('MyBundle:Rule') 
          ->findAll(), 
        'required' => true, 
       ))->getForm(); 

Vì vậy, với tư cách là tài sản tôi muốn nhận $myEntity->getChildEntity()->getName()$myEntity->getValue().

Có cách nào để thực hiện việc này không?

Trả lời

31

Có, xác định một phương pháp getUniqueName() trong lớp thực thể như:

public function getUniqueName() 
{ 
    return sprintf('%s - %s', $this->name, $this->value); 
} 

Và chỉnh sửa các tùy chọn property dạng:

'property' => 'childEntity.uniqueName', 

Bạn cũng có thể bỏ qua tùy chọn property và xác định các __toString() phương pháp tương tự cách để không lặp lại cài đặt của tùy chọn property dưới mọi hình thức.

+1

Chỉ cần hoàn hảo! cảm ơn! – PedroHCan

+0

Phát ngay! Chúc mừng.. – medina