Я использую symfony2 и имею форму, чтобы сохранить отношение одного пользователя к некоторым правилам. Эти правила устанавливаются администратором пользователя. В этой форме после того, как я выбрал пользователя для обновления, я должен выбрать, какое правило у этого пользователя есть разрешение.
Проблема в том, что у меня может быть более одного правила с тем же именем (это другой объект), но значения разные. Поэтому, когда я создаю selectbox, я должен показать имя и значение, как:
Но теперь я могу показать без значения «- $», используя следующий код:
$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();
Итак, как свойство я хотел получить $myEntity->getChildEntity()->getName()
и $myEntity->getValue()
.
Есть ли способ сделать это?
Да, определите метод getUniqueName()
в классе сущности, например:
public function getUniqueName() { return sprintf('%s - %s', $this->name, $this->value); }
И отредактируйте параметр формы property
:
'property' => 'childEntity.uniqueName',
Вы также можете опустить параметр property
и определить __toString()
таким же образом, чтобы не повторять настройку параметра property
в каждой форме.