10
votes

FosuserBundle: Comment mieux intégrer la connexion et l'enregistrement du formulaire dans un modèle?

J'utilise le FosuserBundle de mon application Symfony qui est vraiment géniale. Ils ont les formulaires de connexion et d'enregistrement dans un modèle distinct. Je veux que les deux dans un modèle les affichent côte à côte.

Par conséquent, j'ai créé app / ressource / fosuserbundle / sécurité / login.html.twig code> et app / ressource / fosuserbundle / enregistrement / registre.html.twig code> pour remplacer les deux modèles. Dans login.html.twig code> J'appelle le contrôleur de registre pour rendre son modèle. P>

App / Ressources / FosuserBundle / Security / Login.html.Twig: P>

$this->container->get('templating')->renderResponse('FOSUserBundle:Registration:register.html....


0 commentaires

4 Réponses :


0
votes

Le niveau de nidification maximum provient de xdebug et peut être résolu ... xxx

... dans votre php.ini. < / p>


2 commentaires

Thx, je pensais que c'était une boucle sans fin ce que j'ai eu, car 100 niveaux de nidification sont vraiment profonds. Cela a résolu le message d'erreur. Mais j'attends plus de suggestions concernant une solution pour résoudre mon problème de manière meilleure s'il y en a un.


Il semble que la composante de formulaire de Symfony2 utilise une forte utilisation de la récursion, veuillez consulter les documents officiels: symfony.com/doc/current/cookbook/form/Form_Collections.html (la section correspondante est d'environ 1/3 sur la page)



3
votes

Utilisation:

{% render url('fos_user_security_login') %}
{% render url('fos_user_Registration_register') %}


1 commentaires

J'ajouter {% uRL de rendu ('fos_user_security_login')%} , mais montre-moi le formulaire de connexion et l'inscription, pourquoi? Comme je peux le faire pour ne montrer que le login. Je pense que la faute se trouve sonataadmin



11
votes

Vous pouvez utiliser (comme @Sidali Hallak a déclaré) xxx

mais utilisez vos propres versions du FosuserBundle: Inscription: register.html.twig et et FosuserBundle: Sécurité: login.html.twig Les modèles qui n'élargissent pas fosuserbundle :: layout.html.twig


7 commentaires

Cela semble très bien. Mais il reste encore un problème principal: le contrôleur d'enregistrement est toujours itinéraire vers ses propres itinéraires "/ registre" configurés, ce qui n'est pas l'itinéraire que je veux. Comment puis-je influencer cela? Comment puis-je lui dire que je veux rouler sur ma page où se connecter et s'inscrire existent à côté de l'autre? Je pense que ce n'est pas la solution de changer le routage de la FosuserBundle pour cela.


Au fait: {% URL de rendu ('fos_user_security_login')%} ne fonctionne pas. peux-tu me dire pourquoi?


Avez-vous importé toutes les voies dans votre propre fichier de routage, la route de connexion doit être dedans que la base du dossier de registres? Pour ne pas avoir à désordre avec les contrôleurs avec les contrôleurs, vous pouvez avoir le {% Render URL ('fos_user_security_login')%} dans le FosuserBundle: Inscription: register.html.twig Bien que cela signifie toujours que le formulaire de connexion se dirigera vers la route de connexion d'origine sur une tentative infructueuse. Pour le faire correctement, je pense que vous auriez besoin de personnaliser les contrôleurs d'enregistrement et de sécurité.


C'était une solution intéressante pour le problème. Ce que je batsoise est que cela tire la page entière, y compris les styles, donc je reçois l'en-tête et le pied de page de ma page Reg et de connexion. Des pensées sur un chemin autour de cela? Idéalement, il y aurait un moyen de simplement rendre les formulaires pour la page.


Utilisez-vous votre propre version de FosuserBundle: Sécurité: login.html.twig ? L'original s'étend fosuserbundle :: layout.html.twig qui serait écrasé par vos bundles Childbundle :: layout.html.twig . Copie FosuserBundle: Security.Login.html.twig à votre paquet et retirez le {% s'étend "fosuserbundle :: layout.html.twig"%} et en prenant le code HTML du {% Block FOS_USER_Content%} devrait faire le travail.


Pour modifier la voie du formulaire, vous pouvez remplacer le type de formulaire comme indiqué dans les documents FosuserBundle ( github.com/friendsofsymfony/fosuserbundle/blob/master/resour CES / ... ) et changez l'action comme indiqué ICI


@Qoop I Ajouter {% URL de rendu ('fos_user_security_login')%} , mais montre-moi le formulaire de connexion et l'inscription, pourquoi? Comme je peux le faire pour ne montrer que le login. Je pense que la faute se trouve sonataadmin



7
votes

Pour être conforme aux versions de symfony plus récentes, vous devez éviter d'utiliser {% Render%} code> balise et utilisez {{rendu (contrôleur ('MyBundle: contrôleurclass: action'))}} code> à la place:

    {{ render(controller('FOSUserBundle:Security:login')) }}
    {{ render(controller('FOSUserBundle:Registration:register')) }}


0 commentaires