Page 1 sur 1

afficher des champs d'une entité dans le formulaire d'une autre entité

Posté : 09 avr. 2021, 20:00
par tibari
Bonjour tout le monde.
je sollicite votre aide car je suis dans l'impasse.
je travaille sur un petit projet d'annonces.
j'ai les entités: Annonces,User,Categories,DetailsAuto.
les trois entités sont liées par liaison de Many To One.
ce que je veux faire :quand un user veux ajouter une annonce hors voiture il recupére les champs de l'entité Annonces pas de souci jusqu'au là.le probleme c'est que quand le user veux inserer une annonce pour une voiture il sera besoin des champs de plus pour les details voiture (Marque,Année,Carburant ses infos se trouve dans l'entité DetailsAuto.
quand j'ajoute dans AnnonceType ses champs(Marque,Année,Carburant) ils ne sont pas reconnus dans l'entité Annonce. voici ma feuille:
AnnonceType
class AnnoncesType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('price',TextType::class,['label'=> false,
'attr'=> [

'placeholder' =>'EX.:2000 sans vérgule'
],
'constraints'=>[
new Length([
'min' => 3,
'minMessage' => 'votre prix doit etre à {{ limit }} chiffre',
// max length allowed by Symfony for security reasons
'max' =>10,
]),
],
])
->add('villes',EntityType::class,['class'=>Villes::class,
'placeholder' => '--Selectionner--',
])
->add('title',TextType::class)
->add('categories',EntityType::class,['class'=>Categories::class,
'placeholder' => '--Selectionner--',

])
->add('images', FileType::class,[
'label' => false,
'multiple' => true,
'mapped' => false,
'required' => false
])
->add('content',CKEditorType::class)
->add('Valider',SubmitType::class,['attr'=>['class'=>'btn rounded-1 small blue press mt-2 mb-2']]);

}


public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'data_class' => Annonces::class,


]);
}
}

Re: afficher des champs d'une entité dans le formulaire d'une autre entité

Posté : 12 avr. 2021, 13:43
par Saian
Salut, si tu veux sauvegarder sur l'annonce des informations telles que marque, année et carburant, il faut bien que tu puisses enregistrer ces informations quelques part et à priori tu vas les sauvegarder sur l'annonce. Il faut donc que tu y ajoutes ces colonnes.

Tu peux en revanche utiliser le système d'héritage de doctrine si tu veux typer tes annonces avec une table contenant les colonnes communes à toutes les annonces et des sous tables contenant les colonnes spécifiques aux différents types d'annonces.
https://www.doctrine-project.org/projec ... pping.html

PS : après si tu veux créer un véhicule dans la table des véhicules lors de la création de l'annonce il faut alors que tu crées la liaison sur l'entité annonce par exemple avec une propriété $vehicule, que tu crées une classe VehiculeType avec les différents champs de formulaires et que tu utilises cette classe dans AnnonceType pour le champs vehicule.
// dans AnnonceType
$builder->add('vehicule', VehiculeType::class);