Symfony 2 – Изменить значения полей объекта FormType

Вопрос:

У меня есть два отношения OneToMany между двумя объектами: Серия —> Эпизод и Эпизод —> Musique, которые следуют:

    class Serie{
........
/**
* @ORM\OneToMany(targetEntity="Episode", mappedBy="serieId")
* @ORM\OrderBy({"numeroE" = "ASC"})
*/
private $episodes;
........
}

class Episode{
........
/**
* @var integer
*
* @ORM\ManyToOne(targetEntity="Serie", inversedBy="episodes")
* @ORM\JoinColumn(name="serie_id", referencedColumnName="id")
*/
private $serieId;

/**
* @ORM\OneToMany(targetEntity="Musique", mappedBy="episodeId")
* @ORM\OrderBy({"min" = "ASC", "sec" = "ASC"})
*/
private $musiques;
}

class Musique{
........

/**
* @ORM\ManyToOne(targetEntity="Episode", inversedBy="musiques")
* @ORM\JoinColumn(name="episode_id", referencedColumnName="id")
*/
private $episodeId;

........
}

В моем My\ContentBundle\Form\Type\MusiqueType, который представляет собой форму сущности Musique, у меня есть:

class MusiqueType extends AbstractType{
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('episodeId', 'entity', array(
'class' => 'MyContentBundle:Episode' ,
)
->add('serieId', 'entity', array(
'class' => 'MyContentBundle:Serie' ,
'mapped' => false
)
;
}
}

На мой взгляд, мне нужно будет отобразить поле “episodeId”. Однако, поскольку в моей базе содержится около тысячи эпизодов, я хотел бы отображать в этом поле только эпизоды, принадлежащие выбранной серии.

Я собирался использовать некоторые действия ajax для этого, но мне было интересно: существует ли более простой способ сделать это?

Спасибо !

Лучший ответ:

Вы можете быть более конкретным в создании формы, добавив к ней пользовательский запрос:

use Doctrine\ORM\EntityRepository;
// ...

$builder->add('users', 'entity', array(
    'class' => 'AcmeHelloBundle:User',
    'query_builder' => function(EntityRepository $er) {
        return $er->createQueryBuilder('u')->orderBy('u.username', 'ASC');
    },
));

Более подробную информацию см. на странице ” Тип поля объекта документа SF2″.

Оцените статью
TechArks.Ru
Добавить комментарий