Ich brauche etwas Hilfe, um zu verstehen, wie man den EventListener von Symfony verwendet. Also, ich habe zwei Schaltflächen "Neues Buch zum Verkauf hinzufügen" und "Neues Buch zum Handeln hinzufügen" in meinem Index zu steuern auf der gleichen Form von BookType. Mein Problem ist: wenn klicken Sie auf "neues Buch zum Verkauf hinzufügen" path => fügen Sie das Preisfeld in Form. Ich versuche this für mein Projekt, aber es funktioniert immer noch nicht. Auch ich baue ein persönliches Formular für den BookType.Feld in Formular mit EventListener hinzufügen Symfony
Hier ist mein Code für die Booktype Form:
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder->add('titreOuvrage',TextType::class,array('label'=>'Nom de l\'ouvrage','attr'=>array('class'=>'form-control')))
->add('resumeOuvrage',TextareaType::class,array('label'=>'Résumé de l\'ouvrage','attr'=>array('class'=>'form-control')))
->add('auteur', CollectionType::class, array('entry_type'=>AuteursType::class, 'allow_add'=>true, 'allow_delete'=>true))
->add('editeur',EntityType::class,array('label'=>'Sélectionnez l\'éditeur','attr'=>array('class'=>'form-control'),'class'=>'SB\MainBundle\Entity\Editeurs','choice_label'=>'libelle_editeur'))
->add('etat',EntityType::class,array('label'=>'Cochez l\'état dans lequel se trouve votre ouvrage','class'=>'SB\MainBundle\Entity\EtatsOuvrages','choice_label'=>'libelle_etat','expanded'=>true))
->add('categorie',EntityType::class,array('label'=>'Selectionnez une catégorie','attr'=>array('class'=>'form-control'),'class'=>'SB\MainBundle\Entity\Categories','choice_label'=>'libelle_categorie'))
->add('genre',EntityType::class,array('label'=>'Cochez un ou plusieurs genre','class'=>'SB\MainBundle\Entity\Genres','choice_label'=>'libelle_genre','multiple'=>true,'expanded'=>true))
// ->add('photosOuvragePath')
->add('photosOuvrageFile',FileType::class,array('label'=>'Ajouter des photos'))
->add('statutOuvrage',EntityType::class,array('label'=>'Que voulez-vous faire de l\'ouvrage','attr'=>array('class'=>'form-control'),'class'=>'SB\MainBundle\Entity\StatutsOuvrages','choice_label'=>'libelle_statut'));
// doc : http://symfony.com/doc/2.8/form/dynamic_form_modification.html#form-events-underlying-data
$builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event, Request $request) {
//$prix = $event->getData();
$form = $event->getForm();
$route = $request->attributes->get('sb_main_create_ouvrage_vente');
// on va afficher le champ du prix seulement si on est dans le formulaire de vente
if ($route) {
$form->add('prixOuvrage',
TextType::class,
array('label'=>'Entrez le prix de vente','attr'=>array('class'=>'form-control')));
}
})
;
}
Auch, wenn es nicht funktioniert ist, würde ich gerne wissen, wie in einer Reglerfunktion für Satz Buch einen Standardwert gesetzt = > verkaufe, wenn du auf "Neues Buch zum Verkauf hinzufügen" klickst und buche => Handel, wenn du auf "Neues Buch zum Handeln hinzufügen" klickst.
Nachdem mit Formularereignissen zu behandeln ist ein Grund, warum ich mit der Formularkomponente gestoppt. Ich bin ziemlich zuversichtlich, dass $ Anfrage nicht verfügbar sein wird. – Cerad
Ja, $ Anfrage ist nicht verfügbar, jetzt weiß ich das. Danke. – Tirkal