我有兩個表單,第一個允許我添加專案ProjectType,第二個是允許向專案ProjectContactType添加貢獻者的表單。
在第一種形式中,我得到了帶有決議器的物體公司
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder
->add('name', TextType::class)
->add('projectContacts', CollectionType::class, [
'label' => false,
'entry_type' => ProjectContactType::class,
'by_reference' => false,
'allow_add' => true,
'allow_delete' => true,
]);
}
public function configureOptions(OptionsResolver $resolver): void
{
$resolver
->setDefaults([
'data_class' => Project::class,
])
->setRequired([
'company',
]);
}
我希望能夠以我的第二種形式接收同一個物體。
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder
->add('user', EntityType::class, [
'placeholder' => 'Choisir un client',
'required' => true,
'class' => User::class,
'choice_label' => function (User $user) {
return $user->getFirstName() . " " . $user->getLastName();
}
]);
}
public function configureOptions(OptionsResolver $resolver): void
{
$resolver
->setDefaults([
'data_class' => ProjectContact::class,
]);
}
我的目標是能夠按公司物體過濾用戶。
謝謝你。
uj5u.com熱心網友回復:
您應該能夠像這樣將 ProjectType 的公司傳遞到 ProjectContactType 上:
使 ProjectContactType 中的公司成為必需:
public function configureOptions(OptionsResolver $resolver): void
{
$resolver
->setDefaults([
'data_class' => ProjectContact::class,
])
->setRequired([
'company',
]);
}
然后(在 ProjectType 中)將公司從 ProjectType 的選項傳遞給 ProjectContactType:
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder
->add('name', TextType::class)
->add('projectContacts', CollectionType::class, [
'label' => false,
'entry_type' => ProjectContactType::class,
'by_reference' => false,
'allow_add' => true,
'allow_delete' => true,
'entry_options' => [
'company' => $options['company'],
],
]);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/368145.html
