問題そのまま。デフォルトのフォーム値を設定しようとしていますが、これを達成する方法はありません。
ページレイアウト
{% 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';
}
}
私はすでに多くの方法でデフォルトのフィールドデータを設定しようとしました:
firstname フィールドを定義することにより、コントローラーで (
$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'));
?
小枝のテンプレートに間違いがあるのでしょうか?