UPDATE / EDIT
这就是我所做的,但由于某种原因,它不起作用。所以服务如下,
clearfix.extended_type:
class: Bundle\Form\ClearfixExtension
tags:
- { name: form.type_extension, extended_type: Symfony\Component\Form\Extension\Core\Type\FormType }
现在我确信这是错的,我没有多少使用过服务,仍然试图绕过它们。
我还建立了这个类,请看下面的答案给其他读这个的人,使用正确的命名空间。
我还对块进行了以下操作,
{%- block form_row -%}
<div class="other classes here {% if clearfix %}clearfix"{% else %}"{% endif %}>
{{- form_widget(form) -}}
{{- form_label(form) -}}
{{- form_errors(form) -}}
</div>
{%- endblock form_row -%}
但是当我尝试渲染它时,我从表单中获得的是“变量”clearfix“在......中不存在”
那我做错了什么?我猜这与服务设置有关?
由于
好吧,这是我的一点点,我已经遍历了文档,但我要么完全错了,要么我想做的就是不能做到?所以我使用Symfony 2.7,并将其设置为指向表单twig文件,以便我可以覆盖一些默认值。这没有任何问题,工作正常。但是我现在希望能够使用添加的clearfix类渲染一些行。这就是我现在要解决的问题,
{%- block form_row -%}
<div>
{{- form_widget(form) -}}
{{- form_label(form) -}}
{{- form_errors(form) -}}
</div>
{%- endblock form_row -%}
使用正确的类呈现我的所有行,但我希望能够在某些选定的行上使用以下内容
{%- block _clerfix -%}
<div class="clearfix">
{{- form_widget(form) -}}
{{- form_label(form) -}}
{{- form_errors(form) -}}
</div>
{%- endblock _clerfix -%}
然后我用我想要使用添加的clearfix类构建的表单的抽象类型中的block_name
来调用它,就像这样,
->add('password', 'password', ['label' => 'Password',
'required' => false,
'block_name' => 'clearfix',
'attr' => ['autocomplete' => 'off','class' => 'Passwordd', 'aria-required' => 'true' ]
])
我想要的是什么?我真的不想将clearfix添加到我正在构建的用户表单中,因为这不会使我的代码非常干,因为会有(人们会这么认为)我需要重新使用该块的地方渲染其他字段?
欢迎大家帮助。
感谢。
答案 0 :(得分:2)
您可以创建表单扩展名来定义应用clearfix
的选项Symfony 2.8
class ClearfixExtension extends AbstractTypeExtension
{
public function buildView(FormView $view, FormInterface $form, array $options)
{
$view->vars['clearfix'] = $options['clearfix'];
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefault('clearfix', false);
}
public function getExtendedType()
{
return FormType::class;
}
}
services.yml
clearfix_extension:
class: Bundle\Form\ClearfixExtension
tags:
- { name: form.type_extension, extended_type: Symfony\Component\Form\Extension\Core\Type\FormType }
Symfony 2.7
class ClearfixExtension extends AbstractTypeExtension
{
public function buildView(FormView $view, FormInterface $form, array $options)
{
$view->vars['clearfix'] = $options['clearfix'];
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefault('clearfix', false);
}
public function getExtendedType()
{
return 'form';
}
}
services.yml
clearfix_extension:
class: Bundle\Form\ClearfixExtension
tags:
- { name: form.type_extension, alias: form }
并在树枝中检查此选项
{%- block form_row -%}
<div {% if clearfix %}class="clearfix"{% endif %}>
{{- form_widget(form) -}}
{{- form_label(form) -}}
{{- form_errors(form) -}}
</div>
{%- endblock form_row -%}