我在表单类型中创建了一个属性(foo
)。此属性的目标是将buildForm()
方法(已初始化的位置以及PRE_SUBMIT
侦听程序所在的位置已修改)的值传递给buildView()
中的$view->vars
。如何处理表单类型的帮助属性?
这就是我想要做的(没有服务声明)样本:
class FooType extends AbstractType
{
private $foo;
public function buildForm(FormBuilderInterface $builder, array $options)
{
$this->foo = rand(0, 100);
$builder->addEventListener(FormEvents::PRE_SUBMIT, function (FormEvent $event) {
$this->foo = rand(0, $event->getData());
});
}
public function buildView(FormView $view, FormInterface $form, array $options)
{
$view->vars['foo'] = $this->foo;
}
public function getParent()
{
return NumberType::class;
}
}
但这总是返回相同foo
值的所有窗体字段,当我的预期相反。下面的屏幕截图显示了CollectionType
3个FooType
条目:
我不知道为什么!
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefault('foo', rand(0, 100));
}
,但我无法弄清楚如何修改当前此选项:另外,我用options
还是当它(因为它仅用于内部目的)不会对我来说很有意义尝试形式方法。
如何正确实现它?
谢谢!
这工作,谢谢! – presto