2012-06-27 18 views
1

尝试定制Symfony2的形式生成HTML代码看起来像下面的例子时:故障排除“变量‘值’不存在”定制text_widget

<div class="cform_box"> 
    <div><label>First name:</label></div> 
    <input name="" type="text" id="" class="TextBox" /> 
</div> 
<div class="cform_box" style="height:auto"> 
    <div><label>Message:</label></div> 
    <textarea name="" rows="10" cols="38" id="" class="TextBox" style="height:100px;" /></textarea> 
</div> 

我的表单代码:

$builder->add('name', 'text', array('label' =>'First Name:')); 
$builder->add('message', 'textarea', array('label' =>'Message:')); 

的模板contact.html.twig

{% form_theme form _self %} 
{% block text_widget %} 
{% spaceless %} 
    <input type="text" class='TextBox' {% if value is not empty %}value="{{ value }}"  {% endif %}/> 
{% endspaceless %} 
{% endblock %} 
{% block textarea_widget %} 
{% spaceless %} 
    <div class="textarea_widget"> 
     <textarea rows="10" cols="38" id="{{ id }}" class="TextBox" style="height:100px;">{{ value }}</textarea> 
    </div> 
{% endspaceless %} 
{% endblock textarea_widget %} 

<div class="cform_box">  
    <div>{{ form_label(form.name) }}</div>{{ form_widget(form.name) }} 
</div> 
<div class="cform_box" style="height:auto"> 
    <div>{{ form_label(form.message) }}</div>{{ form_widget(form.message) }} 
</div> 

我得到Variable "value" does not exist in contact.html.twigVariable "id" does not exist in form_div_layout.html.twig如果我评论{% block text_widget %}了。

我使用的Symfony 2.0.15

回答

1

名为 'text_widget' 将块不存在在Symfony2中形成的帮手。这是一个带有type = 'text'的field_widget。

你应该从你的PHP表单定义添加类 “的textBox”,与 'ATTR':

$builder->add('name', 'text', array('label' =>'First Name:', 'attr' => array('class' => 'textBox'))); 
$builder->add('message', 'textarea', array('label' =>'Message:', 'attr' => array('class' => 'textBox'))); 

或者在您的form_theme文件:

{% block field_widget %} 
{% spaceless %} 
    {% if type == 'text' or type == 'textarea' %} 
     {% set attr = attr|merge({'class': attr.class|default('') ~ ' textBox'}) %} 
    {% endif %} 
    {% set type = type|default('text') %} 
    <input type="{{ type }}" {{ block('widget_attributes') }} value="{{ value }}" /> 
{% endspaceless %} 
{% endblock field_widget %} 
+0

感谢了很多,做了什么,我想那! – Leo