我有以下表格:
namespace AppBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Misd\PhoneNumberBundle\Form\Type\PhoneNumberType;
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
use Symfony\Component\Validator\Constraints\IsTrue as TrueConstraint;
class RegistrationType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('name',TextType::class,["label"=>"register.name","required"=>true,'translation_domain' => 'FOSUserBundle'])
->add('surname',TextType::class,["label"=>"register.surname","required"=>true,'translation_domain' => 'FOSUserBundle'])
->add('phone',PhoneNumberType::class,["label"=>"register.phonenum",'translation_domain' => 'FOSUserBundle'])
->add('organization',TextType::class,["label"=>"register.organization","required"=>false,'translation_domain' => 'FOSUserBundle'])
->add('occupation',TextType::class,["label"=>"register.position","required"=>false,'translation_domain' => 'FOSUserBundle'])
->add('accept_terms',CheckboxType::class,[
"label"=>"register.acceptTerms",
"required"=>true,
'translation_domain' => 'FOSUserBundle',
'mapped' => false,
'constraints' => new TrueConstraint(array('message' => 'Your Confirmation Message','groups' => 'Registration')),]);
}
public function getParent()
{
return 'FOS\UserBundle\Form\Type\RegistrationFormType';
}
public function getBlockPrefix()
{
return 'app_user_registration';
}
// For Symfony 2.x
public function getName()
{
return $this->getBlockPrefix();
}
}
使用以下模板呈现:
register_content.html.twig
{% trans_default_domain 'FOSUserBundle' %}
{{ form_errors(form) }}
<div class="form-row">
<div class="form-group col-xs-12 col-sm-6">
{{ form_label(form.name) }}
{{ form_widget(form.name, {'attr': {'class': 'form-control'}}) }}
</div>
<div class="form-group col-xs-12 col-sm-6">
{{ form_label(form.surname) }}
{{ form_widget(form.surname, {'attr': {'class': 'form-control'}}) }}
</div>
</div>
<div class="form-row">
<div class="form-group col">
{{ form_label(form.email) }}
{{ form_widget(form.email, {'attr': {'class': 'form-control'}}) }}
</div>
</div>
<div class="form-row">
<div class="form-group col">
{{ form_label(form.username) }}
{{ form_widget(form.username, {'attr': {'class': 'form-control'}}) }}
</div>
</div>
<div class="form-row">
<div class="form-group col-xs-12 col-sm-6">
{{ form_label(form.plainPassword.first) }}
{{ form_widget(form.plainPassword.first, {'attr': {'class': 'form-control'}}) }}
</div>
<div class="form-group col-xs-12 col-sm-6">
{{ form_label(form.plainPassword.second) }}
{{ form_widget(form.plainPassword.second, {'attr': {'class': 'form-control'}}) }}
</div>
</div>
<div class="form-row">
<div class="form-group col">
{{ form_label(form.phone) }}
{{ form_widget(form.phone, {'attr': {'class': 'form-control'}}) }}
</div>
</div>
<div class="form-row">
<div class="form-group col">
{{ form_label(form.organization) }}
{{ form_widget(form.organization, {'attr': {'class': 'form-control'}}) }}
</div>
</div>
<div class="form-row">
<div class="form-group col">
{{ form_label(form.occupation) }}
{{ form_widget(form.occupation, {'attr': {'class': 'form-control'}}) }}
</div>
</div>
以及
register_no_login.html.twig
{% extends "@FOSUserBundle/layout.html.twig" %}
{% block title %} Register {% endblock title %}
{% block fos_user_content %}
{% trans_default_domain 'FOSUserBundle' %}
<div class="row clearfix"><div class="col"><h1 style="text-align:center">{{ 'register.title'|trans }}</h1></div></div>
<div class="row clearfix">
{{ form_start(form, {'method': 'post', 'action': path('fos_user_registration_register'), 'attr': {'class': 'fos_user_registration_register col'}}) }}
{% include "@FOSUser/Registration/register_content.html.twig" %}
<div class="form-row">
<div class="form-group col">
<div class="form-check">
{{ form_label(form.accept_terms, {'attr':{'class':'form-check-label'}}) }}
{{ form_widget(form.accept_terms, {'attr': {'class': 'form-check-input'}}) }}
</div>
</div>
<div class="form-row">
<input type="submit" class="btn btn-primary" value="{{ 'registration.submit'|trans }}" />
</div>
{{ form_end(form) }}
</row>
{% endblock fos_user_content %}
我的问题是我得到以下错误:
在呈现模板的过程中引发了异常(“注意:数组到字符串的转换”)。
我发现这会被触发,因为我有这个标签定义:
{{ form_label(form.accept_terms, {'attr':{'class':'form-check-label'}}) }}
但当我改变定义时:
{{ form_label(form.accept_terms) }}
一切似乎都正常(除了错误呈现的HTML部分)。所以我想知道为什么会出现这个错误,以及如何添加这个类
form-check-label
贴上我的标签?
编辑2
根据要求,我在表单中放置了以下小树枝片段:
{{ dump(form.accept_terms) }}
并返回以下响应:
FormView {#4272 â¼
+vars: array:25 [â¼
"value" => "1"
"attr" => []
"form" => FormView {#4272}
"id" => "fos_user_registration_form_accept_terms"
"name" => "accept_terms"
"full_name" => "fos_user_registration_form[accept_terms]"
"disabled" => false
"label" => "register.acceptTerms"
"label_format" => null
"multipart" => false
"block_prefixes" => array:3 [â¶]
"unique_block_prefix" => "_fos_user_registration_form_accept_terms"
"translation_domain" => "FOSUserBundle"
"cache_key" => "_fos_user_registration_form_accept_terms_checkbox"
"errors" => FormErrorIterator {#4273 â¶}
"valid" => true
"data" => false
"required" => true
"size" => null
"label_attr" => []
"compound" => false
"method" => "POST"
"action" => ""
"submitted" => false
"checked" => false
]
+parent: FormView {#4228 â¼
+vars: array:24 [â¼
"value" => User {#1742 â¼
#id: null
#name: null
#surname: null
#phone: null
#organization: null
#occupation: null
#username: null
#usernameCanonical: null
#email: null
#emailCanonical: null
#enabled: true
#salt: null
#password: null
#plainPassword: null
#lastLogin: null
#confirmationToken: null
#passwordRequestedAt: null
#groups: null
#roles: []
}
"attr" => []
"form" => FormView {#4228}
"id" => "fos_user_registration_form"
"name" => "fos_user_registration_form"
"full_name" => "fos_user_registration_form"
"disabled" => false
"label" => null
"label_format" => null
"multipart" => false
"block_prefixes" => array:4 [â¶]
"unique_block_prefix" => "_fos_user_registration_form"
"translation_domain" => null
"cache_key" => "_fos_user_registration_form_app_user_registration"
"errors" => FormErrorIterator {#4229 â¶}
"valid" => true
"data" => User {#1742 â¶}
"required" => true
"size" => null
"label_attr" => []
"compound" => true
"method" => "POST"
"action" => ""
"submitted" => false
]
+parent: null
+children: array:10 [â¼
"email" => FormView {#4232 â¶}
"username" => FormView {#4236 â¶}
"plainPassword" => FormView {#4240 â¶}
"name" => FormView {#4252 â¶}
"surname" => FormView {#4256 â¶}
"phone" => FormView {#4260 â¶}
"organization" => FormView {#4264 â¶}
"occupation" => FormView {#4268 â¶}
"accept_terms" => FormView {#4272}
"_token" => FormView {#4299 â¶}
]
-rendered: false
-methodRendered: true
}
+children: []
-rendered: false
-methodRendered: false
}