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


فهاد الدرس الخامس عشر من دورة laravel للمبتدئين غادي نكملو الدورة ديالنا غادي نشوفوا كيفاش نعرضو المعلومات الخاصة ب post اختاريناه من بعد عاد غادي نشوفوا كيفاش نزيدو التعليقات لكل post باش نعاودو نشوفوا العلاقة OneTo Many.


1- إضافة ل fonction show ل PostsController

فغادي نزيد fonction show ل PostsController الدور ديالها هو عرض post اختارو المستخدم فكنسترجع ل post بل id ديالو منبعد كنرسلو ل view show لي غادي نزيوها من بعد .

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

                                //PostsController.php

  public function show($id){
        $post = Post::find($id);
        return view('show',compact('post'));
   }
                            

2- إضافة route ف web.php

غادي نمشي ل web.php غادي نزيد route ديالي لي كياخد ل id ديال ل post وكيرسلو ل fonction show لي زدنا ولي سميناه post.show.

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

                                //web.php

Route::get('show/{id}','PostsController@show')->name('post.show');
                            

3- إضافة رابط المشاهدة فالصفحة الرئيسية

غادي نمشي ل welcome.blade.php فالجدول غادي نزيد الرابط لي كياخذ اسم route لي زدنا مع ل id ديال ل post ولي كيدينا ل الملف show لي غادي نزيدو من بعد وكيعرض فيه المعلومات الخاصة بل post لي اختارينا كيف كنشوف فالصورة :




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



                                //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>
                </div>
            </div>
        </div>
    </body>
</html>
                            

4- عرض post فالملف show

غادي تمشي ل views غادي تزيد تما ملف  جديد سميه  show.blade.php منبعد غادي تزيد فيه الكود لي كيمكن من عرض المعلومات الخاصة بل post ولي جاتنا من ل fonction show لي زدنا ف PostsController فاش كنضغط على voir كنحصل على هاد النتيجة كيف كنشوف فالصورة :



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

                                    //show.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-8 mx-auto">
                    <h3>Article {{$post->id}}</h3>
                    <hr>
                    <div class="card">
                        <div class="card-body bg-light">
                            <h3 class="card-title">{{$post->title}}</h3>
                            <p>Par : {{$post->user->name}}  | Le : {{$post->created_at}}</p>
                            <div class="card-body">
                                {{$post->body}}
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </body>
</html>