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


فهاد الدرس التاسع عشر من دورة laravel للمبتدئين غادي نكملوا الدورة بعرض الادوار لي زدنا فالفورم ديال التسجيل من بعد غادي نشوفوا كيفاش نسجلوا المستخدم مع الدور ديالو منبعد غادي نديرو العرض ديال المستخدمين مع الأدوار ديالهم.


1- عرض les roles فالفورم ديال التسجيل

غادي نمشي ل UsersController فل fonction register غادي ندير تعديل كنسترجع les roles من قاعدة البيانات وكنرسلهم للملف register.blade.php ومتنساش تزيد ل model Role فاول الملف بهاد الطريقة use App\Role.

التعديل لي درنا على الملف هو :

                                //
public function register(){
        return view('register')->with(['roles'=>Role::all()]);
}
                            

2- عرض les roles فالفورم ديال التسجيل تتمة

غادي نمشي ل register.blade.php وغادي نزيد select box لي غادي نعرض فيه les roles لي كاينين فقاعدة البيانات فكنخدم ب foreach.

الكود لي زدت ف register.blade.php هو :

                                //
<!doctype html>
<html lang="{{ app()->getLocale() }}">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">

        <title>Laravel</title>
        <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
        <!-- Fonts -->
        <link href="https://fonts.googleapis.com/css?family=Raleway:100,600" rel="stylesheet" type="text/css">
    </head>
    <body>
        {{-- part 3 --}}
        <div class="container">
            <div class="row mt-4">
                <div class="col-md-6">
                    <h3>Inscription</h3>
                    <hr>
                    @if(Session::has('success'))
                        <div class="alert alert-success">{{Session::get('success')}}</div>
                    @endif
                    {{-- part 3 --}}
                    @foreach($errors->all() as $error)
                        <div class="alert alert-danger">{{$error}}</div>
                    @endforeach
                    <form action="{{route('user.register')}}" method="post">
                        {{csrf_field()}}
                        <div class="form-group">
                            <input type="text" placeholder="Nom & Prénom"  name="name" class="form-control">
                        </div>
                        <div class="form-group">
                            <input type="text" placeholder="Email"  name="email" class="form-control">
                        </div>
                        <div class="form-group">
                            <input type="password" placeholder="Mot de passe"  name="password" class="form-control">
                        </div>
                        <div class="form-group">
                            <select name="role" id="role" class="form-control">
                                @foreach($roles as $role)
                                    <option value="{{$role->id}}">{{$role->name}}</option>
                                @endforeach
                            </select>
                        </div>
                        <div class="form-group">
                            <button class="btn btn-primary" type="submit">Valider</button>
                        </div>
                    </form>
                </div>
            </div>
        </div>
    </body>
</html>
                            

3- تسجيل المستخدم مع role ديالو

غادي نمشي ل UsersController فل fonction store غادي ندير تعديل كنسترجع القيم لي دخلت فالفورم وغادي نخدم بالعلاقة roles ول méthode attach لي غادي تربط المستخدم ب role لي جاني ل id ديالو من الفورم منبعد غادي تمشي ل table role_user غادي تلقى لعلاقة تزادت كيف كتشوف فالصورة :


الكود لي زدنا فل fonction store هو :

                                //
 public function store(Request $request){
        $user = new User();
        $user->name = $request->name;
        $user->email = $request->email;
        $user->password = bcrypt($request->password);
        $user->save();
        $user->roles()->attach($request->role);
        return redirect('/user/register')->with(['success'=>'utilisateur ajouté']);
    }
                            

4- عرض المستخدمين مع les roles

فأول حاجة نسترجع المستخدمين كاملين من قاعدة البيانات فغادي نمشي ل web.php ف route / لي هو الرئيسي غادي نزيد الكود باش نسترجع المستخدمين ونرسلهم للملف welcome.blade.php.

الكود لي غيرنا ف web.php هو : 

                                    //
<?php
use App\Post;
use App\User;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

Route::get('/', function () {
    $posts = Post::paginate(10);
    $users = User::all();
    return view('welcome',compact('posts','users'));
});
                                

5- عرض المستخدمين مع les roles تتمة

من بعد ف welcome.blade.php غادي نسترجع لمستخدمين نخدم ب foreach نعرضهم ونخدم بالعلاقة roles ونعرض اسم role فغادي نحصل على هاد النتيجة :



الكود لي زدنا ف welcome.blade.php هو :

                                    //
<!doctype html>
<html lang="{{ app()->getLocale() }}">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">

        <title>Laravel</title>
        <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
        <!-- Fonts -->
        <link href="https://fonts.googleapis.com/css?family=Raleway:100,600" rel="stylesheet" type="text/css">
    </head>
    <body>
        <div class="container">
            <div class="row mt-4">
                <div class="col-md-6">
                    <h3>Ajouter un article</h3>
                    <hr>
                    {{-- part 4 --}}
                    @if(Session::has('success'))
                        <div class="alert alert-success">{{Session::get('success')}}</div>
                    @endif
                    {{-- part 3 --}}
                    @foreach($errors->all() as $error)
                        <div class="alert alert-danger">{{$error}}</div>
                    @endforeach
                    {{-- part 1 --}}
                    <form action="{{route('post.add')}}" method="post">
                        {{csrf_field()}}
                        <div class="form-group">
                            <input type="text" placeholder="Titre" name="title" class="form-control">
                        </div>
                        <div class="form-group">
                            <textarea placeholder="Description" col="30" rows="5" name="body" class="form-control"></textarea>
                        </div>
                        <div class="form-group">
                            <button class="btn btn-primary" type="submit">Valider</button>
                        </div>
                    </form>
                </div>
                <div class="col-md-6">
                    <h3>Articles</h3>
                    <hr>
                    <table class="table table-hover">
                        <thead>
                            <tr>
                                <th>Auteur</th>
                                <th>Titre</th>
                                <th>Déscrption</th>
                            </tr>
                        </thead>
                        <tbody>
                            @foreach($posts as $post)
                                <tr>
                                    <td>{{$post->user->name}}</td>
                                    <td>{{$post->title}}</td>
                                    <td>{{$post->body}}</td>
                                    <td><a href="{{route('post.show',$post->id)}}">Voir</a></td>
                                </tr>
                            @endforeach
                        </tbody>
                    </table>
                    {{$posts->links()}}
                </div>
            </div>
            <div class="row mt-4">
                <h3>Utilisateurs</h3>
                <hr>
                <table class="table table-hover">
                    <thead>
                        <tr>
                            <th>Nom</th>
                            <th>Role</th>
                        </tr>
                    </thead>
                    <tbody>
                        @foreach($users as $user)
                            @foreach($user->roles as $role)
                                <tr>
                                    <td>{{$user->name}}</td>
                                    <td>{{$role->name}}</td>
                                </tr>
                            @endforeach
                        @endforeach
                    </tbody>
                </table>
            </div>
        </div>
    </body>
</html>