forcer l'affichage d'UN sous formulaire

forcer l'affichage d'UN sous formulaire lié à une collection sans js

Le problème exposé dans ce sujet a été résolu.

Bonjour à tous,

J'ai une entité Produit et une entité Information. Un produit possède une collection d'"Information". La navigabilité entre ces deux Entités est bidirectionnelle.

Je crée un formulaire pour ajouter un "Produit". Au moment de l'ajout, je souhaiterais qu'apparaisse un et un seul sous formulaire "Information" car lors de sa création, un produit ne peut avoir qu'une seule information. Seule une mise à jour des informations entraîne la création d'un nouvel objet "Information" lié au produit.

Donc je souhaiterais que le sous formulaire soit affiché sans qu'il y ait besoin d'une action javascript (clic sur un bouton puis affichage du sous formulaire construit grâce au prototype donné par Symfony).

Je n'ai encore trouvé aucune solution pour cela. Une piste ?

Merci

+0 -0

Salut !

Il te faut ajouter un Information vierge à ton Produit avant de construire le formulaire afin que les champs idoines s'affichent ;)

Après, s'il faut au minimum un Information dans Produit, tu peux ajouter des contraintes de validation qui vérifieront cela.

+0 -0

Je n'ai peut-être pas parfaitement compris ce que tu souhaites faire, désolé si c'est le cas, mais le mot-clef "sous-formulaire" a attiré mon attention.

Gaffe : les formulaires imbriqués (est-ce bien cela dont il s'agit ici ?) fonctionne assez mal dans certains navigateurs.

J'ai eu des ennuis assez complexes à debugger par le passé avec ce genre de bricoles et j'ai trouvé cette discussion pour appuyer mes propos.

+0 -0

Bonjour,

Sans passer par les contraintes de validation, il suffit de mettre l'option allow_add à false. Le formulaire n'acceptera qu'un seule élément Information celui qui existait avant. Et sinon tu gères le sous-form comme une collection c'est juste qu'il n'y aura qu'un seul élément, on ne pourra pas en rajouter et éventuellement tu peux mettre allow_delete à false aussi si tu souhaites qu'il soit obligatoire.

Je reviens tardivement mais en fait la solution était très simple, il a suffit d'instancier l'objet de sous formulaire (sans lui assigner une quelconque valeur) et de l'affecter à l'objet du formulaire principal via la méthode "add" générée dans l'entité.

Je viens de voir que Ymox propose d'ailleurs la solution ;-)

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte