Symfony 2 Создайте поле формы объекта с двумя свойствами - программирование
Подтвердить что ты не робот

Symfony 2 Создайте поле формы объекта с двумя свойствами

Я использую symfony2 и имею форму, чтобы сохранить отношение одного пользователя к некоторым правилам. Эти правила устанавливаются администратором пользователя. В этой форме после того, как я выбрал пользователя для обновления, я должен выбрать, какое правило у этого пользователя есть.

Проблема в том, что у меня может быть более одного правила с тем же именем (это другой объект), но значения разные. Поэтому, когда я создаю selectbox, я должен показать имя и значение как:

  • Количество предметов - 10
  • Количество элементов - 20
  • Значение предмета - 200
  • Значение предмета - 500

Но теперь я просто могу показать без значения "- $", используя следующий код:

$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().

Есть ли способ сделать это?

4b9b3361

Ответ 1

Да, определите метод getUniqueName() в классе сущности, например:

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

И отредактируйте параметр формы property:

'property' => 'childEntity.uniqueName',

Вы также можете опустить параметр property и определить метод __toString() таким же образом, чтобы не повторять настройку параметра property в каждой форме.