دورة SYMFONY 4 للمبتدئين الدرس الرابع عشر

منذ 5 سنوات imadbelasri Symfony
SY

فهاد الدرس الرابع عشر من دورة symfony 4 غادي نكملوا الدورة ديالنا من بعد ماشفنا كيفاش درنا ل configuration ديال ل connexion وزدنا مستخدم فقاعدة البيانات دبا غادي نزيدو الفورم ديال ل connexion و نشوفوا كيفاش نتكونيكاو بالمستخدم لي عندنا مسجل.


1- ل إضافة UserRepository

واحد الحاجة لي نسيت مزدتهاش فالجزء السابق هي Repository لي سبق هضرنا عليه قبل.
غادي تمشي ل dossier Repository غادي تزيد fichier UserRepository.php لي غادي تزيد فيه هاد الكود :

                                                    
                                                        //
<?php

namespace App\Repository;

use App\Entity\User;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Symfony\Bridge\Doctrine\RegistryInterface;

/**
 * @method User|null find($id, $lockMode = null, $lockVersion = null)
 * @method User|null findOneBy(array $criteria, array $orderBy = null)
 * @method User[]    findAll()
 * @method User[]    findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
 */
class UserRepository extends ServiceEntityRepository
{
    public function __construct(RegistryInterface $registry)
    {
        parent::__construct($registry, User::class);
    }

    // /**
    //  * @return User[] Returns an array of User objects
    //  */
    /*
    public function findByExampleField($value)
    {
        return $this->createQueryBuilder('u')
            ->andWhere('u.exampleField = :val')
            ->setParameter('val', $value)
            ->orderBy('u.id', 'ASC')
            ->setMaxResults(10)
            ->getQuery()
            ->getResult()
        ;
    }
    */

    /*
    public function findOneBySomeField($value): ?User
    {
        return $this->createQueryBuilder('u')
            ->andWhere('u.exampleField = :val')
            ->setParameter('val', $value)
            ->getQuery()
            ->getOneOrNullResult()
        ;
    }
    */
}
                                                    
                                                

2- إضافة SecurityController

منبعد غادي نزيد ل controller لي غادي يكونوا فيه les fonctions ديال ل connexion و déconnexion غادي تمشي ل dossier src/Controller غادي تزيد fichier جديد سميه SecurityController.

فيه كنزيد ل fonction login لي فقط كترجعلي la page de connexion لي غادي نزيدوها من بعد ول fonction logout لي خليها خاوية.

فوق كل fonction عندي routes لي سبق وزدناهم فل fichier security.yaml من قبل.

الكود ديال SecurityController هو :

                                                        
                                                            //
<?php

namespace App\Controller;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;


class SecurityController extends AbstractController
{
    /**
    *@Route("/login",name="security_login")
    */
    public function login(AuthenticationUtils $authenticationUtils){
        return $this->render('security/login.html.twig', [
            'last_username' => $authenticationUtils->getLastUsername(),
            'error' => $authenticationUtils->getLastAuthenticationError()
        ]);
    }


    /**
    *@Route("/logout",name="security_logout")
    */
    public function logout(){

    }
}

?>
                                                        
                                                    

3- إضافة الفورم ديال ل connexion

منبعد ف dossier templates غادي تزيد dossier security فيه زيد fichier login.html.twig فيه عندي لفورم لي كتدي ل route security_login ولي كيدي ل fonction login لي سبق زدنا.

وعندي أيضا حقول لي مغاديش يبانو فيهم token و حقل لي فيه route لي غادي يتوجه ليه المستخدم فاش يتكونيكطا.

دبا يلا مشيتي ل http://127.0.0.1:8000/login غادي تلقى :



منبعد دخل samadi2019 فل pseudo و samadi123 فكلمة المرور غادي تلقى النتيجة :



فالصفحة الرئيسية لي هي http://127.0.0.1:8000/hello.

الكود ديال login.html.twig هو :

                                                        
                                                            //
{% extends 'base.html.twig' %}

{% block title %}Connexion{% endblock %}

{% block body %}
    <div class="row mt-4">
        <div class="col-md-6 mx-auto">
            {% if error %}
                <div>{{ error.messageKey|trans(error.messageData, 'security') }}</div>
            {% endif %}
            <div class="card text-default bg-light">
              <div class="card-body">
                <h4 class="card-title">Connexion</h4>
                <hr>
                <form action="{{path('security_login')}}" method="post">
                    <div>
                        <div class="form-group">
                            <label for="username">Pseudo*</label>
                            <input type="text" name="_username" id="username" required class="form-control">
                        </div>
                        <div class="form-group">
                            <label for="password">Mot de passe*</label>
                            <input type="password" name="_password" id="password" required class="form-control">
                        </div>
                        <div class="form-group">
                            <button class="btn btn-success" id="login" name="login">
                                Valider
                            </button>
                        </div>
                        <input type="hidden" name="_csrf_token" value="{{csrf_token('authenticate')}}">
                        <input type="hidden" name="_target_path" value="{{app.request.get('redirect_to')}}">
                    </div>
                </form>
              </div>
            </div>
        </div>    
    </div>
{% endblock %}
                                                        
                                                    

دروس ذات صلة

SY

دورة symfony 4 للمبتدئين الدرس الأول

فهاد الدورة الجديدة ولي غادي نخصصوها ل symfony 4 بناءا على الطلب ديال العديد من الزوار ديال الموقع غ...


SY

دورة SYMFONY 4 للمبتدئين الدرس الثاني

فهاد الدرس الثاني من دورة SYMFONY 4 للمبتدئين غادي نكملوا الدورة ديالنا من بعد ماشفنا كيفاش نزي...


SY

دورة SYMFONY 4 للمبتدئين الدرس الثالت

فهاد الدرس الثالت من دورة symfony 4 للمبتدئين غادي نشوفوا البنية ديال واحد ل page twig وكيفاش symfon...


SY

دورة SYMFONY 4 للمبتدئين الدرس الرابع

فهاد الدرس الرابع من دورة SYMFONY 4 للمبتدئين غادي نكملوا الدورة ديالنا وغادي نشوفوا كيفاش نعرضوا مج...


SY

دورة SYMFONY 4 للمبتدئين الدرس الخامس

فهاد الدرس الخامس من دورة symfony 4 للمبتدئين غادي نشوفوا كيفاش نتعاملوا مع قواعد البيانات ف symfony...


SY

دورة SYMFONY 4 للمبتدئين الدرس السادس

فهاد الدرس السادس من دورة SYMFONY 4 للمبتدئين غادي نكملوا الدورة ديالنا منبعد ما زدنا قاعدة البيانات...


SY

دورة SYMFONY 4 للمبتدئين الدرس السابع

فهاد الدرس السابع من دورة SYMFONY 4 للمبتدئين غادي نكملوا الدورة ديالنا منبعد مازدنا les articl...


SY

دورة SYMFONY 4 للمبتدئين الدرس الثامن

فهاد الدرس الثامن من دورة symfony للمبتدئين غادي نكملو الدورة ديالنا منبعد مشفنا كيفاش زدنا المعلوما...


SY

دورة SYMFONY 4 للمبتدئين الدرس التاسع

فهاد الدرس التاسع من دورة symfony 4 للمبتدئين غادي نكملوا الدورة ديالنا من بعد ما زدنا الفورم فالدرس...


SY

دورة SYMFONY 4 للمبتدئين الدرس العاشر

فهاد الدرس التاسع من دورة symfony 4 للمبتدئين غادي نكملوا الدورة ديالنا وغادي نشوفوا كيفاش نديرو الت...