IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

Rendu twig


Sujet :

Symfony PHP

  1. #1
    Membre à l'essai
    Femme Profil pro
    maçon
    Inscrit en
    Octobre 2018
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : maçon
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2018
    Messages : 39
    Points : 21
    Points
    21
    Par défaut Rendu twig
    Salut a tous.

    je développe une application symfony 4.

    inscription, connexion, mot de passe oubliée ....

    J'ai réussis à tout faire fonctionner

    mais, hey oui sinon je ne serais pas la

    j'ai utilisé ce tuto pour mettre en place le mot de passe oublié : http://blog.dev-web.io/2018/11/05/sy.../#comment-1244

    On a donc un formulaire à remplir avec son adresse mail, on reçois un mail généré qui nous renvois vers une page pour entrer le nouveau mot de passe.

    Tout fonctionne de base mais pas le rendu. J'ai mon rendu qui est complètement planté. Le block body est recouvert par le header.

    Nom : Capture d’écran du 2019-02-08 22-37-43.png
Affichages : 173
Taille : 15,8 Ko

    Comme vous pouvez le voir on ne vois pas le formulaire, il est sous le header.

    Tout fonctionne sur mes autres page, je ne comprend donc pas ce qui ce passe.

    Voici le controller :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
     
    <?php
     
    namespace App\Controller;
     
    use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
    use Symfony\Component\HttpFoundation\Response;
    use Symfony\Component\Routing\Annotation\Route;
    use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;
     
     
    use App\Entity\User;
    use Symfony\Component\HttpFoundation\Request;
    use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
    use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;
    use Symfony\Component\Security\Csrf\TokenGenerator\TokenGeneratorInterface;
     
     
     
    class SecurityController extends AbstractController
    {
     
    /**
         * @Route("/forgottenPassword", name="app_forgotten_password")
         */
        public function forgottenPassword(
            Request $request,
            UserPasswordEncoderInterface $encoder,
            \Swift_Mailer $mailer,
            TokenGeneratorInterface $tokenGenerator
        ): Response
        {
     
            if ($request->isMethod('POST')) {
     
                $email = $request->request->get('email');
     
                $entityManager = $this->getDoctrine()->getManager();
                $user = $entityManager->getRepository(User::class)->findOneByEmail($email);
                /* @var $user User */
     
                if ($user === null) {
                    $this->addFlash('danger', 'Email Inconnu');
                    return $this->redirectToRoute('home');
                }
                $token = $tokenGenerator->generateToken();
     
                try{
                    $user->setResetToken($token);
                    $entityManager->flush();
                } catch (\Exception $e) {
                    $this->addFlash('warning', $e->getMessage());
                    return $this->redirectToRoute('home');
                }
     
                $url = $this->generateUrl('app_reset_password', array('token' => $token), UrlGeneratorInterface::ABSOLUTE_URL);
     
                $message = (new \Swift_Message('Forgot Password'))
                    ->setFrom(['postmain@dos.org' => 'dos.org'])
                    ->setTo($user->getEmail())
                    ->setBody(
                        "Voici le token pour reseter votre mot de passe : <br/>" . $url,
                        'text/html'
                    );
     
                $mailer->send($message);
     
                $this->addFlash('notice', 'Mail envoyé');
     
                return $this->redirectToRoute('devosi');
            }
     
            return $this->render('security/forgotten_password.html.twig');
        }
     
         /**
         * @Route("/reset_password/{token}", name="app_reset_password")
         */
        public function resetPassword(Request $request, string $token, UserPasswordEncoderInterface $passwordEncoder)
        {
     
            if ($request->isMethod('POST')) {
                $entityManager = $this->getDoctrine()->getManager();
     
                $user = $entityManager->getRepository(User::class)->findOneByResetToken($token);
                /* @var $user User */
     
                if ($user === null) {
                    $this->addFlash('danger', 'Token Inconnu');
                    return $this->redirectToRoute('home');
                }
     
                $user->setResetToken(null);
                $user->setPassword($passwordEncoder->encodePassword($user, $request->request->get('password')));
                $entityManager->flush();
     
                $this->addFlash('notice', 'Mot de passe mis à jour');
     
                return $this->redirectToRoute('home');
            }else {
     
                return $this->render('security/reset_password.html.twig', ['token' => $token]);
            }
     
        }
    }

    voici le fichier reset_password.html.twig

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    {% extends 'base.html.twig' %}
     
    {% block title %}Reset Password !{% endblock %}
     
    {% block body %}
     
        <form method="post">
     
            <h1 class="h3 mb-3 font-weight-normal">Définissez votre nouveau mot de passe</h1>
     
            <div class="form-group">
                <label for="inputPassword" class="sr-only">Password</label>
                <input type="password" name="password" id="inputPassword" class="form-control" placeholder="Password" required>
            </div>    
            <div class="form-group">    
                <input type="hidden" name="token" value="{token}">
            </div>    
     
            <div class="form-group">
                <button class="btn btn-sm btn-primary" type="submit">
                    Valider
                </button>
            </div>    
        </form>
    {% endblock %}

    Si quelqu'un peu m'aiclérer sur ce qui foire, une piste, de la lecture ...

    merci de votre aide

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Retraité
    Inscrit en
    Septembre 2018
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Septembre 2018
    Messages : 32
    Points : 27
    Points
    27
    Par défaut
    Bonjour,

    Comme piste éventuelle dans le base.html.twig, juste avant le block body, tu peux ajouter

    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    		<div class="container-fluid" style="margin-top:60px">
    		</div>

    Ca permet de le décaler avec le margin-top ...

    A tester

  3. #3
    Membre à l'essai
    Femme Profil pro
    maçon
    Inscrit en
    Octobre 2018
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : maçon
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2018
    Messages : 39
    Points : 21
    Points
    21
    Par défaut
    Salut.

    merci pour ta réponse.

    effectivement je peux ajuster manuellement la marge pour avoir un résultat.

    dans mon fichier j'ai ajouter un margin-top à la div et j'ai quelque chose de correct.

    mais je ne comprend pas pourquoi cela ne fonctionne pas contrairement au autre page.

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Retraité
    Inscrit en
    Septembre 2018
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Septembre 2018
    Messages : 32
    Points : 27
    Points
    27
    Par défaut
    Je n'ai pas la réponse, mais je suis preneur si quelqu'un sait

Discussions similaires

  1. [Twig] Rendu Twig en fonction des valeurs fournies
    Par Aizen64 dans le forum Bibliothèques et frameworks
    Réponses: 0
    Dernier message: 25/11/2015, 16h26
  2. [2.x] rendu d'une fonction twig
    Par chlock62 dans le forum Symfony
    Réponses: 8
    Dernier message: 26/08/2014, 13h33
  3. Rendu OpenGL offscreen sous Windows
    Par rincevent_123 dans le forum OpenGL
    Réponses: 3
    Dernier message: 28/11/2003, 09h23
  4. Problème avec le rendu de sphère
    Par Francky033 dans le forum DirectX
    Réponses: 10
    Dernier message: 29/08/2003, 22h00
  5. Un objet rendu apparaît derrière un autre objet
    Par jamal24 dans le forum OpenGL
    Réponses: 2
    Dernier message: 01/05/2003, 20h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo