Dans symfony 2.0, comment créer une liste déroulante utilisant une association un-à-un dans un formulaire? Pouvez-vous mettre les bons exemples s'il vous plaît?Association en tête-à-tête?
Répondre
Je vais essayer de répondre à votre question de la façon dont je la comprends. Disons que j'ai un objet Faculty
lié à un seul objet University
. Donc, dans la forme utilisée pour créer ou modifier une faculté, j'affiche une liste déroulante de toutes les universités dans la base de données et l'utilisateur en choisit une parmi elles. Il y a un type de champ Symfony spécial qui fait exactement ceci: le type d'entité. Voici le code de la méthode buildForm
que j'utilise dans mon objet FacultyType
utilisé pour créer la forme de la faculté:
// Application\AcmeBundle\Form\Type\FacultyType
public function buildForm(FormBuilder $builder, array $options)
{
$builder->add('name');
$builder->add('university', 'entity', array(
// The class of the entity used as a combo box item
'class' => 'AcmeBundle:University',
// The property of the entity displaying the entity as text
'property' => 'name',
// The query builder used to populate the combo box, accepts
// a QueryBuilder object or a \Closure like below
'query_builder' => function(EntityRepository $repository) {
// This will return a query builder selecting all universities
return $repository->createQueryBuilder('u');
}
));
}
Note: Il y a d'autres propriétés qui peuvent être définies pour le type de champ de l'entité, je vous invite à prendre un coup d'oeil à ce page pour plus d'informations à ce sujet.
Rendu, cela affichera une liste déroulante avec toutes les universités que j'ai définies dans la base de données. Lorsque l'utilisateur enregistre le formulaire, l'université choisie est affectée à l'objet faculté lié au formulaire via un setter. Vous pourriez probablement afficher une liste déroulante à la place d'une liste déroulante. Si vous devez sélectionner plusieurs entités, l'option 'multiple'
de l'entité de type champ peut être utile. Cela étant dit, l'exemple que j'ai montré n'est pas une relation un-à-un, mais plutôt un plusieurs-à-un pour l'objet Faculty
et un un-à-plusieurs pour l'objet University
. Une relation One-to-One serait quelque chose de plus comme une relation où un University
a un Address
unique. Dans ce cas, une liste déroulante ne serait pas utile puisque l'université ne peut avoir qu'une seule adresse, donc une sous-forme serait plus appropriée. S'il a beaucoup d'adresses, alors il devient une relation un-à-plusieurs comme la relation entre l'université et ses facultés.
Je ne sais pas si cela répondra à votre question correctement, mais j'espère que cela vous mènera à une solution finale.
Cordialement, Matt
Vous devez utiliser le type de champ entité Symfony2. Un bon exemple est trouvé à http://symfony.com/doc/current/reference/forms/types/entity.html
- 1. Association en Rails 3
- 2. Association
- 3. Association et itération en C++
- 4. clé inconnue en association Rails
- 5. tri complexe association en rails3
- 6. Association et association à une requête?
- 7. Association dilemme
- 8. CakePHP Association
- 9. Structure Association
- 10. Association DataMapper
- 11. autoréférentiel association
- 12. BLtoolkit association
- 13. Association Problème
- 14. Association de chaînes avec enums en C#
- 15. Sauvegarder une association individuelle en hibernation?
- 16. Création d'une association en définissant une méthode
- 17. Mise en place d'une association has_one
- 18. Association de 4 tables en veille prolongée
- 19. Comment utiliser ActiveRecord en association profonde
- 20. Association ManyToOne en option dans Symfony/Doctrine
- 21. appelle une fonction pour: condition en association
- 22. Résumé Superclasse et association en XML
- 23. Mise en place d'une association polymorphe
- 24. Association d'une association un-à-plusieurs avec une association plusieurs-à-plusieurs dans Rails 3
- 25. association de fichiers verrouillée
- 26. Rails association polymorphique + fields_for
- 27. Entity Framework - Association Set
- 28. Active Complex Enregistrez Association
- 29. sans inscription association HQL
- 30. association CakePHP HABTM Règles
Pouvez-vous fournir plus de détails quant à ce que vous voulez? – Riley
Je souhaite créer une liste déroulante à partir d'une table associée un-à-un. – Zeck