blog احترافي ب laravel 5.4 الجزء الرابع


فهاد الجزء الرابع من blog احترافي ب laravel 5.4 غادي نكملو الملفات الخاصة ب les catégories ولي غادي يمكنوا الأدمن من إضافة تعديل وحدف catégorie كما غادي نكملو الملف لي غادي يمكن من عرض les posts لي مسحنا بصفة مؤقتة ولي غادي يكون عند الأدمن الصلاحية باش يردهم أو يمسحهم بصفة نهائية.

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

1- الملف admin/posts/deleted.blade.php

دائما فالمجلد posts  فيه كنزيد ملف جديد سميه deleted.blade.php هادا الملف لي غادي يتعرضوا فيه كل les posts لي مسحنا مؤقتا ولي غادي يكون عند الأدمن الصلاحية باش يرد post أو يمسحو بصفة نهائية فكنخدم ب postTrashed لي كتجينا من الرابط post/deleted/ لي كاين فالملف routes/web.php وكنخدم ب foreach باش كنعرض كل المعلومات فبلاصتها بالإضافة للروابط لي كيمكنوا من إرجاع وحدف  post الكود ديال الملف هو :


                                @extends('layouts.app-layout')

@section('styles')

@endsection

@section('header')
  @include('includes.header')
@endsection

@section('content')
    <div class="row">
        @include('includes.sidebar')
        <div class="col-md-9">
           <table class="table">
                <thead>
                    <tr>
                        <th>Id</th>
                        <th>Titre</th>
                        <th>Déscription</th>
                        <th>Image</th>
                        <th>Url</th>
                        <th>Ajouté par</th>
                        <th>Le:</th>
                        <th>Actions</th>
                    </tr>
                </thead>
                <tbody>
                    @foreach($postTrashed as $post)
                        <tr>
                           <td>{{$post->id}}</td>
                           <td>{{$post->title}}</td>
                           <td>{{$post->body}}</td>
                           <td><img src="{{URL::to('images/'.$post->image)}}" height="60" width="60"/></td>
                           <td>{{$post->slug}}</td>
                           <td>{{$post->user->name}}</td>
                           <td>{{$post->created_at}}</td>   
                           <td>
                             <a href="{{route('posts.restore',$post->id)}}" class="btn btn-success btn-xs"><i class="glyphicon glyphicon-plus"></i></a>
                             <a href="{{route('posts.kill',$post->id)}}" class="btn btn-danger btn-xs"><i class="glyphicon glyphicon-trash"></i></a>
                           </td>
                        </tr>
                    @endforeach
                </tbody>
            </table>
        </div>
    </div>
@endsection

@section('footer')
  @include('includes.footer')
@endsection

@section('scripts')

@endsection

                            

2- الملف CategoriesController.php

كنمشي ل app/Http/Controllers كنزيد ملف جديد كنسميه CategoriesController.php لي غادي تكون فيه fonction index لي كتسترجع les catégories من قاعدة البيانات وكترسلهم للملف index ديال الأدمن ولي غادي نزيدوه من بعد ثم كاين fonction store لي كتمكن من إضافة catégorie لقاعدة البيانات من بعد مكتحقق بلي الحقل name ماخاويش ثم كاين fonction edit لي كتسترجع  catégorie بال id ديالها وكتوجه الأدمن للملف الخاص بالتعديل ثم  fonction update لي كتعدل المعلومات الخاصة ب catégorie من بعد مكتحقق بلي حتى شي حقل ما خاوي ثم كاين fonction destroy لي كتسترجع catégorie واحدة بواسطة ل id ديالها وكتمسحها من قاعدة البيانات الكود النهائي هو :

                                <?php

namespace App\Http\Controllers;
use App\Category;
use Illuminate\Http\Request;

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

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function 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'
        ]);
        Category::create(['name'=>$request->name]);
        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)
    {
        //
        return view('admin.categories.edit')->with(['categorie'=>Category::find($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,[
            'name'=>'required'
        ]);
        Category::find($id)->update(['name'=>$request->name]);
        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)
    {
        //
        $categorie = Category::find($id); 
        foreach($categorie->posts as $categoriePost){
            $categoriePost->forceDelete();
        }
        $categorie->delete();
        return redirect()->route('categories.index')->with(['success'=>'Catégorie supprimée avec succés']);
    }
}

                            

3- الملف Category.php

من بعد ف app كنزيد ملف كنسميه Category.php ولي عبارة عن model فيه الكود لي غادي يمكني باش ندير les relations ما بين جدول categories والجداول الأخرى فكاين fonction posts لي كتقولنا بلي كل categorie عندها post أو بزاف ديال les posts الكود ديال الملف هو :

                                <?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Category extends Model
{
    //
    protected $fillable = ['name'];
    public function posts(){
        return $this->hasMany('App\Post');
    }
}
                            

4- الملف admin/categories/add.blade.php

منبعد ف views/admin كنزيد مجلد جديد كنسميه categories فيه زيد ملف جديد سميه add.blade.php هادا الملف لي غادي يمكن الأدمن من إضافة catégorie من بعد ما كيدخل المعلومات ديالها فل form ثم كترسل للfonction store لي ف CategoriesController الكود ديال الملف هو :

                                    @extends('layouts.app-layout')

@section('styles')

@endsection

@section('header')
  @include('includes.header')
@endsection

@section('content')
    <div class="row">
        @include('includes.sidebar')
        <div class="col-md-4 col-md-offset-1">  
            <form action="{{route('categories.store')}}" method="post" class="form-horizontal">
            <fieldset>
                <legend>Ajouter une catégorie</legend>
                {{csrf_field()}}
                 <div class="form-group">
                    <label for="category">Catégorie*</label>
                    <input type="text" class="form-control" name="name" id="name" placeholder="Catégorie">
                </div>
                <div class="form-group">
                    <button class="btn btn-success" type="submit" name="submit">Valider</button>
                </div>
                </legend>
            </fieldset>
            </form>  
        </div>
    </div>
@endsection

@section('footer')
  @include('includes.footer')
@endsection

@section('scripts')

@endsection

                                

5- الملف admin/categories/edit.blade.php

دائما فالمجلد categories فيه زيد ملف جديد سميه edit.blade.php هادا الملف لي غادي يمكن الأدمن من تعديل catégorie من بعد ما كيدخل المعلومات ديالها فل form ثم كترسل للfonction update لي ف CategoriesController الكود ديال الملف هو :

                                    @extends('layouts.app-layout')

@section('styles')

@endsection

@section('header')
  @include('includes.header')
@endsection

@section('content')
    <div class="row">
        @include('includes.sidebar')
        <div class="col-md-4 col-md-offset-1">
            <h1 class="text-primary">
                Modifier une catégorie
            </h1>  
            <hr>
            <form action="{{route('categories.update',['id'=>$categorie->id])}}" method="post" class="form-vertical">
                {{csrf_field()}}
                 <div class="form-group">
                    <label for="category">Catégorie*</label>
                    <input type="text" class="form-control" name="name" id="name" placeholder="Catégorie" value="{{$categorie->name}}">
                </div>
                <div class="form-group">
                    <button class="btn btn-success" type="submit" name="submit">Valider</button>
                </div>
            </form>  
        </div>
    </div>
@endsection

@section('footer')
  @include('includes.footer')
@endsection

@section('scripts')

@endsection

                                


إشترك في قناتنا على اليوتيوب

بحث في الموقع


إشترك للتوصل بالجديد