[英]Symfony2 - Creating fieldsets
我正在尝试创建一个基本的fieldset模板。 我有的是这个:
fieldset.html.twig
{% form_theme form _self %}
{% block form_row %}
<fieldset>
<legend></legend>
{{ form_row(form) }}
</fieldset>
{% endblock %}
FieldsetType.php
class FieldsetType extends AbstractType
{
public function __construct($tituloFieldset="")
{
$this->titulo = $tituloFieldset;
}
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'attr' => array(
'title'=>$this->titulo
),
'mapped'=>false
));
}
public function getParent()
{
return 'form';
}
public function getName()
{
return 'fieldset';
}
private $titulo;
}
目前的用法
$builder->add('nestedform', new FieldsetType('legend'));
我已经尝试了所有方法:将标题添加为标签(没有字段渲染的额外标签),模板化整个表单(在这种情况下我不能添加额外的字段集),等等。
我该怎么办?
我已经将这个功能解压缩成一个捆绑包,因为我需要在一些项目中使用https://github.com/adamquaile/AdamQuaileFieldsetBundle
但基于其他一些答案和想法,它相当于:
class FieldsetType extends AbstractType {
public function setDefaultOptions ( OptionsResolverInterface $resolver )
{
$resolver->setDefaults([
'legend' => '',
'virtual' => true,
'options' => array(),
'fields' => array(),
]);
}
public function buildForm ( FormBuilderInterface $builder, array $options )
{
if ( !empty($options['fields']) ) {
foreach ( $options['fields'] as $field ) {
$builder->add($field['name'], $field['type'], $field['attr']);
}
}
}
public function buildView ( FormView $view, FormInterface $form, array $options )
{
if (false !== $options['legend']) {
$view->vars['legend'] = $options['legend'];
}
}
public function getName()
{
return 'fieldset';
}
}
你走在正确的轨道上。 你可以在这里找到一个简单的例子: https : //gist.github.com/spcmky/8512371
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.