Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
TextField true上需要Symfony渲染_Symfony - Fatal编程技术网

TextField true上需要Symfony渲染

TextField true上需要Symfony渲染,symfony,Symfony,我不明白为什么此子窗体的呈现没有呈现我的TextTypefirstName上的required标记 我的表单基于订单实体 OrderFormType的集合类型为Tent,基于TentFormType TentFormType的集合类型为Camper,基于CamperFormType 所以订单>帐篷>露营车 namespace AppBundle\Form\Type; use Symfony\Component\Form\AbstractType; use Symfony\Component\F

我不明白为什么此子窗体的呈现没有呈现我的TextType
firstName
上的
required
标记

我的表单基于
订单
实体
OrderFormType
的集合类型为
Tent
,基于
TentFormType

TentFormType
的集合类型为
Camper
,基于
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_小部件呈现:

{{ form_widget(form.firstName) }}
{{ form_widget(form.lastName) }}
但这并没有添加
必需的
字段:

<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">
但我的FormType不需要它

有人知道为什么吗

--编辑--

我的
露营车
实体

<?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;

    // ...

}

很抱歉,我不能使用评论,所以我在这里提出了一个建议。。。
尝试:


你能把你的实体粘贴到这里吗?就这么做了:)!我已经有了
form\u start
form\u end
form\u widget(form)
将在同一个位置呈现我的所有字段,这不是我想要的。占位符需要在attr中?是的,因为您的实体中有@Assert\NotBlank(),也许您可以省去required。的确,但是用户可以提交表单而不必填写表单,这不是用户友好的要求,需要进行HTML5验证。Assert\NotBlank是一种后端验证,我希望同时获得这两种验证。问题不在于如何获取必填字段,我可以使用
{form_widget(form.firstName,{'attr':{'required':'required'}}}}}
,问题是“为什么它在应该呈现的情况下默认不呈现?”
<?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;

    // ...

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