Задать вопрос

Формы в симфони, EntityType. Можно ли добавить свой option?

Товарищи, вот билдер. Возьмем к примеру socialNetwork
public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('socialNetwork', EntityType::class, array(
                'class' => 'AppBundle:SocialNetwork',
                'choice_label' => 'name',
                'attr' => array(
                    'class' => 'select2 socialNetwork',
                    'style' => 'width: 200px'
                ),
                'empty_data' => 'John Doe',
            ))
            ->add('citys', EntityType::class, array(
                'class' => 'AppBundle:City',
                'choice_label' => function ($city) {
                    return $city->getName();
                },
                'attr' => array(
                    'class' => 'select2 city',
                    'style' => 'width: 200px',
                )
            ))/*
            ->add('price', TextType::class, array(
                'attr' => array(
                    'class' => 'price'
                )
            ))
            ->add('countFollowers', TextType::class, array(
                'attr' => array(
                    'class' => 'followers'
                )
            ))
            ->add('sex', ChoiceType::class, array(
                'choices'  => array(
                    'Мужчина' => true,
                    'Женщина' => false,
                ),
                'attr' => array(
                    'class' => 'select2',
                    'style' => 'width: 150px'
                )
            ))
            ->add('age', TextType::class, array(
                'attr' => array(
                    'class' => 'age'
                )
            ))*/
            ->add('save', SubmitType::class, array('label' => 'Применить'))
            ->getForm();
    }


Он берет данные из Entity:
<?php

namespace AppBundle\Entity;

use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping as ORM;

/**
 * Class Tasks
 * @package AppBundle\Entity
 * @ORM\Table(name="social_network")
 * @ORM\Entity
 */
class SocialNetwork
{
    /**
     * @ORM\Column(type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id_sn;


    /**
     * @ORM\Column(type="string");
     */
    protected $name;


    /**
     * @ORM\OneToMany(targetEntity="Tasks", mappedBy="social_network")
     */
    protected $tasks;


    /**
     * @ORM\OneToMany(targetEntity="Area", mappedBy="social_network")
     */
    protected $area;

    public function __construct() {
        $this->tasks = new ArrayCollection();
        $this->area = new ArrayCollection();
    }

    /**
     * Get idSn
     *
     * @return integer
     */
    public function getIdSn()
    {
        return $this->id_sn;
    }
..............


Мне нужно, чтобы в инпуте был вариант типа "Не выбрано". Как мне его добавить?

Можно, конечно, использовать ChoiseType и циклом загрузить в него все поля с этим "Не выбрано", но это костыль.
  • Вопрос задан
  • 965 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
Austin_Powers
@Austin_Powers
Web developer (Symfony, Go, Vue.js)
Атрибут 'require' => false укажите в форме
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
BoShurik
@BoShurik Куратор тега Symfony
Symfony developer
https://symfony.com/doc/current/reference/forms/ty...
Либо https://symfony.com/doc/current/reference/forms/ty... (не совсем понятно что в вопросе у вас значит "не выбрано")
Ответ написан
Комментировать
e_svirsky
@e_svirsky
Web Developer
Вместо 'empty_data' => 'John Doe',
напишите empty_data => Не выбрано. Этот параметр служит именно для этого.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы