gpt4 book ai didi

forms - Symfony2更改嵌入式表单的字段选项

转载 作者:行者123 更新时间:2023-12-03 12:01:46 25 4
gpt4 key购买 nike

我的问题基本上是,是否可以从父表单更改嵌入字段的选项?

为了说明问题,请考虑一下;我有一个这样的父表单类型类:

class FruitFormType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('name', 'text')
->add('apple', new AppleFormType())
;
}

和一个单独的 bundle 包中的子表单类型类,我不希望像这样进行编辑:
class AppleFormType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('name', 'text')
->add('qty', 'integer', array('label' => 'rubbish label')
;
}

我想将 qty的标签更改为其他名称,但是我只想在 FruitForm中这样做,而不是在所有使用 AppleForm的地方都这样做。我曾希望能够做类似的事情:
class FruitFormType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('name', 'text')
->add('apple', new AppleFormType(), array('qty' => array('label' => 'better label')))
;
}

要么:
class FruitFormType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('name', 'text')
->add('apple', new AppleFormType())
;

$builder->get('apple')->get('qty')->setOption('label', 'better label');
}

但是这些(以及其他一些尝试)都没有使我失败。我没有看到 setOption方法。

有人知道这样做的方法吗?

谢谢

最佳答案

我还想更改选项,即FOSUserBundle中现有字段的明显“更改标签”用例。我知道我可以在Twig或翻译中做到这一点。

@redbirdo通过“似乎添加具有相同名称的字段将替换它”为我指明了正确的方向。解决方法如下:

$field = $builder->get('username');         // get the field
$options = $field->getOptions(); // get the options
$type = $field->getType()->getName(); // get the name of the type
$options['label'] = "Login Name"; // change the label
$builder->add('username', $type, $options); // replace the field

关于forms - Symfony2更改嵌入式表单的字段选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11616789/

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