как установить набор результатов в виджете выбора в автоматически сгенерированной форме Symfony (связанной с отношением)

Я хотел бы узнать с помощью следующего кода, как отобразить в сгенерированном виде набор контактов, связанных с компанией этой заметки, вместо всех контактов в БД?

Примечание сущности:

 /**
* @ORM\ManyToOne(targetEntity="Main\MainBundle\Entity\NoteType")
* @ORM\JoinColumn(nullable=false)
*/
private $noteType;

/**
* @ORM\ManyToOne(targetEntity="Main\MainBundle\Entity\Contact", inversedBy="contacts")
* @ORM\JoinColumn(nullable=true)
*/
private $contact;

/**
* @ORM\ManyToOne(targetEntity="Main\MainBundle\Entity\Company")
* @ORM\JoinColumn(nullable=false)
*/
private $company;

/**
* @ORM\ManyToOne(targetEntity="Main\MainBundle\Entity\User", inversedBy="users")
* @ORM\JoinColumn(nullable=false)
*/
private $user;

Юридическая компания:

/**
* @ORM\OneToMany(targetEntity="Main\MainBundle\Entity\Contact", mappedBy="company", cascade={"remove"})
* @ORM\JoinColumn(nullable=true)
*/
private $contacts;

0

Решение

Если вы не любите использовать QueryBuilder, вы можете установить свои контакты в контроллере:

$oForm = $this->createForm(new CompanyForm($contacts));

и в форме вы можете сделать это:

public function __construct($contacts))
{
$this->vContacts = $contacts;
}

затем:

->add('contacts', 'choice', array(
'required' => true,
'label' => 'contacts',
'choices' => $this->vContacts,
)
)
1

Другие решения

Если вам нужно получить определенный набор сущностей в поле формы, вы можете использовать построитель запросов.

В вашем случае (внутри вашего класса типа формы) это может быть что-то вроде:

$builder->add('contacts', 'entity', array(
'class' => 'MainMainBundle:Contact',
'query_builder' => function (EntityRepository $er) use ($company) {
return $er->createQueryBuilder('c')
->where('c.company = :company')
->setParameter('company', $company);
},
));

Обратите внимание, чтобы пройти $company переменная.

1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector