2017-04-08 76 views
0

我不明白为什么此子窗体的渲染不会渲染我的TextType firstName上的required标记;TextField需要Symfony渲染true

我的基础上Order实体
OrderFormType形式具有Tent一个CollectionType,基于TentFormType
TentFormTypeCamper一个CollectionType,基于CamperFormType

所以订单>帐篷>野营

namespace AppBundle\Form\Type; 

use Symfony\Component\Form\AbstractType; 
use Symfony\Component\Form\Extension\Core\Type\TextType; 
//... 

class CamperFormType extends AbstractType 
{ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder->add('firstName', TextType::class, [ 
      'required' => true, //Should even not been usefull since SF2.8 
      'label' => 'First name', 
      'attr'  => [ 
       'placeholder' => 'First name' 
      ], 
     ]); 

     //... 
    } 

    public function configureOptions(OptionsResolver $resolver) 
    { 
     $resolver->setDefaults([ 
      'data_class'  => 'AppBundle\Entity\Camper', 
      'csrf_protection' => true, 
      'error_bubbling' => true, 
      'csrf_field_name' => '_token', 
      //... 
     ]); 
    } 
} 

这些字段只是用form_widget呈现:

{{ form_widget(form.firstName) }} 
{{ form_widget(form.lastName) }} 

但是这不添加required领域:

<input id="app_order_form_type_tents_0_campers_0_firstName" name="app_order_form_type[tents][0][campers][0][firstName]" placeholder="First name" class="form-control" type="text"> 
<input id="app_order_form_type_tents_0_campers_0_lastName" name="app_order_form_type[tents][0][campers][0][lastName]" placeholder="Last name" class="form-control" type="text"> 

我能做

{{ form_widget(form.firstName, {'attr': {'required': 'required'}}) }} 
{{ form_widget(form.lastName, {'attr': {'required': 'required'}}) }} 

但它不应该与我的FormType需要...

有谁知道为什么?

- 编辑 -

Camper实体

<?php 

namespace AppBundle\Entity; 

use Doctrine\ORM\Mapping as ORM; 
use Symfony\Component\Validator\Constraints as Assert; 

/** 
* Camper. 
* 
* @ORM\Table(name="camper") 
* @ORM\Entity() 
*/ 
class Camper 
{ 
    /** 
    * @var int 
    * 
    * @ORM\Column(name="id", type="integer") 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    private $id; 

    /** 
    * @var string 
    * @Assert\NotBlank() 
    * 
    * @ORM\Column(name="firstName", type="string", length=255, nullable=false) 
    */ 
    private $firstName; 

    // ... 

} 
+0

你能在这里粘贴你的实体吗? –

+0

只是做了:)! – Bouffe

回答

0

对不起,我不能用注释,所以我把这里的建议... 尝试:

{{ form_start(form) }} 
{{ form_widget(form) }} 
{{ form_end(form) }} 
+0

我已经有'form_start'和'form_end' 'form_widget(form)'将呈现所有我的领域在同一个地方,这不是我想要的。 – Bouffe

+0

占位符需要在attr? –

+0

是的,http://stackoverflow.com/questions/41200549/symfony3-the-option-placeholder-does-not-exist – Bouffe