gpt4 book ai didi

php - Symfony/ Twig : how to pass additional data to a form?

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

我正在寻找一种方法来管理 MyFormType.php 中的所有表单数据。到目前为止,我有 labelplaceholder,但我想存储一个额外的字符串,例如“更多详细信息”

AppBundle\Form\Type\MyFormType.php

// ...
$builder->add('fieldname', TextType::class, [
'label' => 'My label',
'attr' => ['placeholder' => 'My placeholder'],
'additionalData' => ['info' => 'More information] // <- ???
]);
// ...

myForm.html.twig

Label: {{form_label(form.fieldname)}} 
Textfield: {{form_widget(form.fieldname)}}
Info: {{form_additionalData(form.fieldname, 'info')}} {# ??? #}

我正在考虑通过 data-*-attribute 传递数据,例如:

// ...
'attr' => ['data-info' => 'more information']
// ...

但是如何以一种好的方式读取数据,而没有错误的变通办法呢?

这个问题有什么最佳/好的做法吗?

提前致谢!

最佳答案

好的做法是根据您的需要创建一个 FormType 并为其配置必要的选项。

class YourType extends AbstractType
{
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'add_info' => "",
));
}


public function buildView(FormView $view, FormInterface $form, array $options)
{
$view->vars = array_replace($view->vars, array(
'add_info' => $options['add_info'],
));
}

public function getBlockPrefix()
{
return 'your_type';
}


public function getParent()
{
return TextType::class;
}
}

然后

$builder->add('fieldname', YourType::class, [
'label' => 'My label',
'attr' => ['placeholder' => 'My placeholder'],
'add_info' => 'More information'
]);

然后制作一个小部件

{% block your_type_widget %}
{% spaceless %}
{{ add_info }}
... other code
{% endspaceless %}
{% endblock %}

关于php - Symfony/ Twig : how to pass additional data to a form?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39637583/

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