gpt4 book ai didi

php - Symfony2 Twig 形式的快捷方式 : form_widget

转载 作者:可可西里 更新时间:2023-10-31 23:32:25 25 4
gpt4 key购买 nike

我想替换:

{{ form_errors(form.name) }}
{{ form_widget(form.name, { 'attr': {'placeholder': 'Nom'} }) }}

通过:

{{ form.name|field('Nom') }}

我该怎么做?我尝试在 Twig 扩展中执行此操作,但我无权访问 form_widget 函数。

编辑:我可以使用 form.name 属性(包括父表单)来完成,但我会重复 symfony 代码,这将是一个非常丑陋的大破解

最佳答案

如果您要求我将 attr 移至您的表单类,则更有意义:

class SomeForm extends AbstractType {
//.....
$builder->add('name', 'text', array('attr' => array('placeholder'=>'Nom')));
}

因为我猜你需要为你可以检查的一些字段进行一些自定义渲染:

http://symfony.com/doc/2.0/cookbook/form/form_customization.html#how-to-customize-an-individual-field

您还可以创建一个新类型并按照此处的说明对其进行自定义:

http://symfony.com/doc/2.0/cookbook/form/form_customization.html#what-are-form-themes

您甚至可以更改默认呈现方式,并要求 symfony 使用字段的标签字符串默认呈现您的占位符标记(全局启用表单主题的详细信息在上面引用的链接中介绍):

{% block text_widget %}
{% set type = type|default('text') %}
<input type="text" {{ block('widget_attributes') }} value="{{ value }}" />
{% endblock field_widget %}

{% block widget_attributes %}
{% spaceless %}
{% for attrname,attrvalue in attr %}{{attrname}}="{{attrvalue}}" {% endfor %} placeholder="{{ label|trans }}"
{% endspaceless %}
{% endblock widget_attributes %}

{% block form_row %}
{% spaceless %}
<div class="my-class">
{{ form_errors(form) }}
{{ form_widget(form) }}
</div>
{% endspaceless %}
{% endblock form_row %}

因此,您可以使用 symfony 提供的主题将自己限制为 form_row(form.name)。Symfony 的方法对我来说看起来“非常”干/死。希望对您有所帮助。

关于php - Symfony2 Twig 形式的快捷方式 : form_widget,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14983036/

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