gpt4 book ai didi

symfony - 如何从表单类型设置实体构造函数参数?

转载 作者:行者123 更新时间:2023-12-01 14:33:54 26 4
gpt4 key购买 nike

我需要将参数传递给在表单类型中使用的实体的构造函数。

我在 setDefaultOptions 方法中从表单类型设置实体:

public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'MyApp\MyBundle\Entity\MyEntity'
));
}

我想使用这样的东西:
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'MyApp\MyBundle\Entity\MyEntity',
'my_parameter' => 'some value'
));
}

这样它将通过构造函数注入(inject)。

这可能吗? (我正在使用 Symfony 2.2)

最佳答案

我想你正在寻找这个 http://symfony.com/doc/master/cookbook/form/use_empty_data.html#option-2-provide-a-closure

假设您有数据 Money 对象,它接受两个参数金额和货币。这是此类对象的表单类型:

<?php
class MoneyType extends AbstractType
{
/**
* {@inheritdoc}
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('amount', 'number')
->add('currency', 'text')
;
}

/**
* {@inheritdoc}
*/
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'Foo\Model\Money',
'empty_data' => function (FormInterface $form) {
return new Money(
$form->getData()['amount'],
$form->getData()['currency']
);
},
));
}
}

关于symfony - 如何从表单类型设置实体构造函数参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16458661/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com