问题是这样的。我正在尝试设置默认表单值,但我无法实现这一点。
页面布局
{% extends bundle ~ "Bundle::reg.html.twig" %}
{% form_theme regForm 'AcmeBundle:Form:order_type_fields.html.twig' %}
{% block content %}
<form action="{{ path('reg') }}" {{ form_enctype(regForm) }} method="POST">
<div>
{{ form_widget( regForm.firstname )}}
</div>
{{ form_rest( regForm )}}
<input type="submit>
</form>
{% endblock %}
字段布局
{% block text_widget %}
{% spaceless %}
<label>{{label}}</label>
<input type="text" {{ block('widget_attributes') }} value="{{ value }}">
{% endspaceless %}
{% endblock text_widget %}
控制器
$user = new User();
$regForm = $this->get('form.factory')->create(new RegForm(), $user);
return $this->render("FrontendBundle:Order:type.html.twig", array(
'regForm' => $regForm->createView(),
);
形式
class RegForm extends AbstractType
{
public function buildForm( FormBuilder $builder, array $options ){
$builder->add( 'firstname', 'text', array( 'label' => ' ', 'data' => 'Enter your name here' ) );
}
public function getName()
{
return 'reg';
}
}
我已经尝试以多种方式设置默认字段数据:
在我的控制器中通过定义名字字段(
$user->setFirstname('Enter your name here');
)。
在表单生成器中使用 setData 方法(
$builder->add( 'firstname', 'text', array( 'label' => ' ' ) )->setData(array('firstname' => 'Enter your name here'));
要不就
$builder->setData(array('firstname' => 'Enter your name here'));
所有其他形式的东西都很好。例如,我可以毫无问题地设置标签“FIRSTNAME”。那么,我错过了什么?
UPD:在第一次回答后,我决定问一个直接的问题:为什么默认值不起作用,而标签工作得很好:
$builder->add('firstname', 'text', array('label' => 'name', 'data' => 'Andrew'));
?
也许树枝模板中有一些错误?