gpt4 book ai didi

Symfony Forms - 如何更改 CollectionTypes 项目标签

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

这是我关于 stackoverflow 的第一个问题;直到现在,我只是寻找我的问题的答案并找到了它们。但现在似乎我有一个在这里没有人或至少没有人偶然发现的。

关于我的问题:

在我的类(class) FieldType extends AbstractType我想更改 CollectionType 的标签项目。

这适用于所有包含的项目,但我想单独设置标签:

$translations = $builder->create("translations", CollectionType::class, array(
"label" => "Translations",
"type" => TranslationType::class,
"entry_options" => array(
'label' => "THIS IS A TEST"
)
));

在这里,我向 CollectionType 添加了新类型并尝试设置每个项目的标签:
foreach ($this->field->getTranslations() as $translation) {
/** @var Language $language */
$iso2 = strtolower($translation->getLanguage()->getIso2());
$translation = $builder->create("translation_{$iso2}", TranslationType::class, array(
'label' => $iso2,
)
);
$translations->add($translation);
}
$builder->add($translations);

但它们不会显示在模板中;我想这里显示的是集合的索引 (0,1,...) . (见 Rendered Translations FormView)

这是我的 TranslationType :
class TranslationType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add("label");
$builder->add("placeholder");
}

public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => Translation::class,
));
}
}

最佳答案

我是通过搜索完全相同的问题来到这里的。

0,1,... 可能是实体的 ArrayCollection 的键。但这无济于事。

下面的方法并不漂亮,但它们应该有效。我会看这个帖子以获得更好的建议......

方法一

在您的 FormType 类中,添加:

use Symfony\Component\Form\FormView;
use Symfony\Component\Form\FormInterface;

...


/**
* this gets called in the final stage before rendering the form
*/
public function finishView(FormView $view, FormInterface $form, array $options)
{
foreach ($view['translations']->children as $childView)
{
// here you have access to all child form vars, assigned entities, etc
$childView->vars['label'] = ''; // set label here
}
}

方法二:

只需根据 http://symfony.com/doc/current/cookbook/form/form_customization.html 自定义模板

而不是 {{ form_label() }} ,用别的东西:)

正如我所说,它并不漂亮,但希望它有所帮助。

关于Symfony Forms - 如何更改 CollectionTypes 项目标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35362635/

25 4 0