如果从 ChoiceType 中选择了特定值,则添加字段
Add field if certain value is selected from ChoiceType
在我从 ChoiceType 中选择一个值后,我正在尝试向我的表单添加一个新的 TextType 字段。我不知道该怎么办。我尝试了一下,但没有按我想要的方式工作。
抛出的异常是:
Typed property App\Model\Software::$productType must not be accessed before initialization
final class ProductType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder
->add('productType', ChoiceType::class, [
'choices' => [
'Software' => 'software',
'Television' => 'television',
'Giftcard' => 'giftcard',
'Bitte wählen' => '',
],
])
->add('productNumber', TextType::class)
->add('title', TextType::class)
->add('submit', SubmitType::class);
$builder->addEventListener(
FormEvents::POST_SET_DATA,
function (FormEvent $event)
{
$form = $event->getForm();
$data = $event->getData();
if ($data->productType === 'giftcard') {
$form->add('value', TextType::class);
}
}
);
}
}
我已经用不同的 FormEvents 试过了。
您遇到的错误“键入 属性 App\Model\Software::$productType 在初始化之前不得访问”是因为在您的实体 'App\Model\Software' 中,属性 'productType'具有“字符串”类型或其他类型,但未初始化为 null 或空字符串或...,并且在您的侦听器中您正在尝试访问该属性 ($data->productType)
尝试将您的属性初始化为 null 或空字符串
在我从 ChoiceType 中选择一个值后,我正在尝试向我的表单添加一个新的 TextType 字段。我不知道该怎么办。我尝试了一下,但没有按我想要的方式工作。
抛出的异常是:
Typed property App\Model\Software::$productType must not be accessed before initialization
final class ProductType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder
->add('productType', ChoiceType::class, [
'choices' => [
'Software' => 'software',
'Television' => 'television',
'Giftcard' => 'giftcard',
'Bitte wählen' => '',
],
])
->add('productNumber', TextType::class)
->add('title', TextType::class)
->add('submit', SubmitType::class);
$builder->addEventListener(
FormEvents::POST_SET_DATA,
function (FormEvent $event)
{
$form = $event->getForm();
$data = $event->getData();
if ($data->productType === 'giftcard') {
$form->add('value', TextType::class);
}
}
);
}
}
我已经用不同的 FormEvents 试过了。
您遇到的错误“键入 属性 App\Model\Software::$productType 在初始化之前不得访问”是因为在您的实体 'App\Model\Software' 中,属性 'productType'具有“字符串”类型或其他类型,但未初始化为 null 或空字符串或...,并且在您的侦听器中您正在尝试访问该属性 ($data->productType)
尝试将您的属性初始化为 null 或空字符串