موقع ecommerce بإستعمال laravel الجزء الثاني

فهاد الجزء الثاني من موقع ecommerce بإستعمال laravel غادي نكملو الملفات الخاصة بالمستخدم ولي غادي تمكنو باش يتسجل ويتزاد فقاعدة البيانات و من بعد يتكونيكطا .

نظرة سريعة بالفيديو


1- الملف UsersController.php


كنمشي ل app/Http/Controllers كنزيد ملف جديد كنسميه UsersController.php لي غادي تكون فيه fonction index لي كتسترجع المستخدمين لي عندنا فقاعدة البيانات وكترسلهم للملف index ديال الأدمن ثم كاين fonction create كتوجه المستخدم لملف التسجيل لي غادي نزيدوه من بعد منبعد كاين fonction store لي كتحقق من أن الحقول لي ترسلو من الملف register.blade.php مملوئين بالإضافة للأنهم ميكونوش أقل او فايتين واحد القدر من الحروف ثم كنسجل مستخدم جديد فقاعدة البيانات منبعد كاين update لي كتعدل المعلومات ديال مستخدم من بعد مكتسترجعو بإستعمال لid ثم كاين fonction removeAdmin لي كتحيد لمستخدم الصفة ديال أدمين ثم كاين fonction destroy لي كتمكن من حدف مستخدم من بعد مكتلقاه بل id ديالو ثم كاين getLogin لي كتوجه المستخدم لملف تسجيل الدخول ثم كاين login لي كتحقق من أن الحقول لي ترسلو من الملف login.blade.php مملوئين منبعد كتدير محاولة دخول بالإمايل وكلمة المرور لي دخل المستخدم يلا تمت بنجاح كترجعو للصفحة الرئيسية متمتش كتعرض رسالة خطأ من بعد كاين logout لي فقط كتمكن المستخدم باش يديكونيكطا الكود ديال الملف هو :

                                    
                                        <?php

namespace App\Http\Controllers;
use Auth;
use Illuminate\Http\Request;
use App\User;
use App\Http\Requests;
class UsersController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        //
        $users = User::all();
        return view('admin.users.index',compact('users'));
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        //
        return view('users.create');
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        //
        $this->validate($request,[
            'nom'=>'required|max:100',
            'prenom'=>'required|max:100',
            'email'=>'required|unique:users',
            'password'=>'required|min:6',
            'ville'=>'required|max:100'
        ],[
            'required'=>'Ce champ est obligatoire'
        ]);
        $user = new User();
        $user->nom = $request->nom;
        $user->prenom = $request->prenom;
        $user->email = $request->email;
        $user->password = bcrypt($request->password);
        $user->ville = $request->ville;
        $user->save();
        return redirect()->route('index')->with(['success'=>'Compte crée avec succés']);
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        //
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        //
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        //
        $user = User::find($id);
        $user->is_admin = 1;
        $user->update();
        return redirect()->route('admin.users.index')->with(['success'=>'Nouveau admin ajouté']);
    }
    public function removeAdmin(Request $request, $id)
    {
        //
        $user = User::find($id);
        $user->is_admin = 0;
        $user->update();
        return redirect()->route('admin.users.index')->with(['success'=>'Admin retiré']);
    }
    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        //
        $user = User::find($id);
        $user->delete();
        return redirect()->route('admin.users.index')->with(['success'=>'Compte supprimé avec succés']);
    }
    public function getLogin(){
        return view('users.login');
    }
    public function login(Request $request){
        $this->validate($request,[
            'email'=>'required',
            'password'=>'required|min:6'
        ],[
            'required'=>'Ce champ est obligatoire'
        ]);
        if(Auth::attempt(['email'=>$request->email,'password'=>$request->password])){
            return redirect()->route('index');
        }else{
            return redirect()->route('user.login')->with(['fail'=>'Email ou mot de passe est incorrect']);
        }
    }
    public function logout(){
        Auth::logout();
        return redirect()->route('index');
    }
    public function admin(){
        return view('admin.index');
    }
}

                                    
                                

2- الملف User.php


من بعد ف app كنزيد ملف كنسميه User.php ولي عبارة عن model فيه fonction isAdmin فقط كتحقق واش المستخدم أدمين أولا فقط مستخدم عادي ولي غادي نحتاجوها من بعد الكود ديال الملف هو :

                                    
                                        <?php

namespace App;

use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable
{
    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'name', 'email', 'password',
    ];

    /**
     * The attributes that should be hidden for arrays.
     *
     * @var array
     */
    protected $hidden = [
        'password', 'remember_token',
    ];
    public function isAdmin(){
        if($this->is_admin == 1){
            return true;
        }else{
            return false;
        }
    }
}

                                    
                                

3- الملف create.blade.php


منبعد ف views كنزيد مجلد جديد كنسميه users فيه زيد ملف جديد سميه create.blade.php هادا الملف لي غادي يمكن المستخدم من التسجيل من بعد ما كيدخل المعلومات ديالو فل form ثم كترسل للfonction store لي ف UsersController.php بواسطة route user.create الكود ديال الملف هو :

                                      
                                        @extends('layouts.includes.main-index')

@section('content')
       
<div class="row" style="margin-top:50px">
    <div class="col-md-6 col-md-offset-3">
        <div class="panel panel-primary">
            <div class="panel-heading">Inscription</div>
             <form action="{{route('user.create')}}" method="post" class="" style="padding:10px">
                <input type="hidden" name="_token" value="{{csrf_token()}}">
                <div class="form-group">
                <label for="nom">Nom*</label>
                <input type="text" class="form-control" name="nom" placeholder="Votre Nom">
                @if($errors->has('nom'))
                    <span style="color:red">{{$errors->first('nom')}}</span>
                @endif
                </div>
                <div class="form-group">
                <label for="prenom">Prénom*</label>
                <input type="text" class="form-control" name="prenom" placeholder="Votre Prénom">
                @if($errors->has('prenom'))
                    <span style="color:red">{{$errors->first('nom')}}</span>
                @endif
                </div>
                <div class="form-group">
                <label for="ville">Ville*</label>
                <input type="text" class="form-control" name="ville" placeholder=Ville>
                @if($errors->has('ville'))
                    <span style="color:red">{{$errors->first('ville')}}</span>
                @endif
                </div>
                <div class="form-group">
                <label for="email">Email*</label>
                <input type="email" class="form-control" name="email" placeholder="Email">
                @if($errors->has('email'))
                    <span style="color:red">{{$errors->first('email')}}</span>
                @endif
                </div>
                <div class="form-group">
                <label for="password">Mot de passe*</label>
                <input type="password" class="form-control" name="password"  placeholder="Passe">
                @if($errors->has('password'))
                    <span style="color:red">{{$errors->first('password')}}</span>
                @endif
                </div>
                <button type="submit" class="btn btn-success">Valider</button>
             </form>
        </div>
    </div>
</div>
@endsection
                                      
                                    

4- الملف login.blade.php


دائما فالمجلد users زيد ملف جديد سميه login.blade.php هادا الملف لي غادي يمكن المستخدم من تسجيل الدخول ديالومن بعد ما كيدخل الإمايل و كلمة المرور ديالو فل form ثم كترسل للfonction login لي ف UsersController.php بواسطة route user.login هاد les routes غادي نزيدوهم من بعد فالملف routes.php الكود ديال الملف هو :

                                        
                                            @extends('layouts.includes.main-index')

@section('content')
       
<div class="row" style="margin-top:50px">
    <div class="col-md-6 col-md-offset-3">
        <div class="panel panel-primary">
            <div class="panel-heading">Connexion</div>
             <form action="{{route('user.login')}}" method="post" class="" style="padding:10px">
                <input type="hidden" name="_token" value="{{csrf_token()}}">
                <div class="form-group">
                <label for="email">Email*</label>
                <input type="email" class="form-control" name="email" placeholder="Email">
                @if($errors->has('email'))
                    <span style="color:red">{{$errors->first('email')}}</span>
                @endif
                </div>
                <div class="form-group">
                <label for="password">Mot de passe*</label>
                <input type="password" class="form-control" name="password"  placeholder="Passe">
                @if($errors->has('password'))
                    <span style="color:red">{{$errors->first('password')}}</span>
                @endif
                </div>
                <button type="submit" class="btn btn-success">Valider</button>
             </form>
        </div>
    </div>
</div>
@endsection
                                        
                                    

5- الملف CategoriesController.php


كنمشي ل app/Http/Controllers كنزيد ملف جديد كنسميه CategoriesController.php لي غادي تكون فيه fonction index لي كتسترجع الفئات لي عندنا فقاعدة البيانات وكترسلهم للملف index ديال الأدمن ثم كاين fonction create كتوجه الأدمن لملف إضافة فئة لي غادي نزيدوه من بعد منبعد كاين fonction store لي كتحقق من أن الحقل لي ترسل من الملف create.blade.php مملوء ثم كتزيد فئة جديدة فقاعدة البيانات منبعد كاين update لي كتعدل المعلومات ديال فئة من بعد مكتسترجعها بإستعمال لid ثم كاين fonction destroy لي كتحدف فئة من بعد مكتسترجعها بإستعمال id الكود ديال الملف هو :

                                        
                                            <?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Category;
use App\Http\Requests;

class CategoriesController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        //
       $categories = Category::all();
       return view('admin.categories.index',compact('categories'));
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        //
        return view('admin.categories.create');
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        //
        $this->validate($request,[
            'name'=>'required|max:100'
        ],[
            'required'=>'Ce champ est obligatoire'
        ]);
        $category = new Category();
        $category->titre = $request->name;
        $category->save();
        return redirect()->route('categories.index')->with(['success'=>'Catégorie ajoutée avec succés']);
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        //
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        //
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        //
        $this->validate($request,[
            'titre'=>'required|max:100'
        ],[
            'required'=>'Ce champ est obligatoire'
        ]);
        $category = Category::find($id);
        $category->titre = $request->titre;
        $category->update();
        return redirect()->route('categories.index')->with(['success'=>'Catégorie modifiée avec succés']);
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        //
        $category = Category::find($id);
        $category->delete();
        return redirect()->route('categories.index')->with(['success'=>'Catégorie supprimée avec succés']);
    }
}

                                        
                                    

كلمات مفاتيح :