blog احترافي ب laravel 5.4 الجزء الثامن


فهاد الجزء الثامن والأخير غادي نكملو الملف الرئيسي ديال الصفحة الرئيسية ديالنا ولي غادي تمكنا من عرض les posts ديالنا كما غادي نشوفوا كيفاش نمنعوا المستخدم العادي من أنه يدخل للصفحة الرئيسية الخاصة بالادمن وبلي فقط الأدمن من له الصلاحية باش يدخلها.

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

1- الملف index.blade.php

فالمجلد views فيه زيد ملف جديد سميه index.blade.php هادا هو الملف ديال الصفحة الرئيسية ديالنا ولي غادي يتعرضوا فيه les catégories فالقائمة وغادي يتعرض فيه آخر post تزاد وغادي يكونوا فيه les posts ديال كل catégorie عندنا وهادشي كامل غادي يجينا من ل fonction index لي كاينة فالملف HomeController.php الكود ديال الملف هو:

                                @extends('layouts.app-layout')

@section('styles')

@endsection

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

@section('content')
    <div class="row">
        <div class="col-md-8 col-md-offset-3">
            <div align="center">
                <ul class="nav navbar-nav second-menu">
                  @foreach($categories as $categorie)
                      <li><a href="{{route('post.by.category',['id'=>$categorie->id])}}">{{$categorie->name}}</a></li>
                  @endforeach
                </ul>
            </div>
        </div>
    </div>
    <div class="row">
        <div class="col-md-4 col-md-offset-4">
            <div class="media" align="center">
                <div class="media-body">
                      <h4 class=""><a href="{{route('post.show',['id'=>$postOne->slug])}}">{{$postOne->title}}</a></h4>
                      <img src="{{URL::to('images/'.$postOne->image)}}" alt="" height="300" width="300">
                      <p class="lead">{{str_limit($postOne->body)}}</p>
                </div>
                <div class="media-footer">
                    <span class="label label-default">{{$postOne->user->name}}</span>
                    <span class="label label-primary">{{$postOne->created_at->diffForHumans()}}</span>
                    <span class="label label-success">{{$postOne->category->name}}</span>
                </div>
            </div>
        </div>
    </div>
    <div class="row">
        <div class="col-md-12">
                <div class="row">
                  <h2 class="text-info">{{$laravel->name}} <span class="badge">{{$laravel->posts()->count()}}</span></h2>
                     <hr>
                     @foreach($laravel->posts()->take(3)->get() as $post)
                        <div class="col-md-4">
                           <div class="media">
                              <div class="media-body">
                                    <h4 class=""><a href="{{route('post.show',['id'=>$post->slug])}}">{{$post->title}}</a></h4>
                                    <img src="{{URL::to('images/'.$post->image)}}" alt="" height="300" width="300">
                                    <p class="lead">{{str_limit($post->body)}}</p>
                              </div>
                              <div class="media-footer">
                                  <span class="label label-default">{{$post->user->name}}</span>
                                  <span class="label label-primary">{{$post->created_at->diffForHumans()}}</span>
                                  <span class="label label-success">{{$post->category->name}}</span>
                              </div>  
                           </div>
                        </div>
                     @endforeach
                </div>
                <div class="row">
                    <h2 class="text-info">{{$android->name}} <span class="badge">{{$android->posts()->count()}}</span></h2>
                    <hr>
                     @foreach($android->posts()->take(3)->get() as $post)
                        <div class="col-md-4">
                           <div class="media">
                              <div class="media-body">
                                    <h4 class=""><a href="{{route('post.show',['id'=>$post->slug])}}">{{$post->title}}</a></h4>
                                    <img src="{{URL::to('images/'.$post->image)}}" alt="" height="300" width="300">
                                    <p class="lead">{{str_limit($post->body)}}</p>
                              </div>
                              <div class="media-footer">
                                  <span class="label label-default">{{$post->user->name}}</span>
                                  <span class="label label-primary">{{$post->created_at->diffForHumans()}}</span>
                                  <span class="label label-success">{{$post->category->name}}</span>
                              </div>  
                           </div>
                        </div>
                    @endforeach
                    </div>
                    <div class="row">
                    <h2 class="text-info">{{$html->name}} <span class="badge">{{$html->posts()->count()}}</span></h2>
                     <hr>
                     @foreach($html->posts()->take(3)->get() as $post)
                        <div class="col-md-4">
                           <div class="media">
                              <div class="media-body">
                                    <h4 class="text-primary"><a href="{{route('post.show',['id'=>$post->slug])}}">{{$post->title}}</a></h4>
                                    <img src="{{URL::to('images/'.$post->image)}}" alt="" height="300" width="300">
                                    <p class="lead">{{str_limit($post->body)}}</p>
                              </div>
                              <div class="media-footer">
                                  <span class="label label-default">{{$post->user->name}}</span>
                                  <span class="label label-primary">{{$post->created_at->diffForHumans()}}</span>
                                  <span class="label label-success">{{$post->category->name}}</span>
                              </div>  
                           </div>
                        </div>
                     @endforeach
                     </div> 
                    <div class="row">
                    <h2 class="text-info">{{$css->name}} <span class="badge">{{$css->posts()->count()}}</span></h2>
                    <hr>     
                     @foreach($css->posts()->take(3)->get() as $post)
                        <div class="col-md-4">
                           <div class="media">
                              <div class="media-body">
                                    <h4 class="text-primary"><a href="{{route('post.show',['id'=>$post->slug])}}">{{$post->title}}</a></h4>
                                    <img src="{{URL::to('images/'.$post->image)}}" alt="" height="300" width="300">
                                    <p class="lead">{{str_limit($post->body)}}</p>
                              </div>
                              <div class="media-footer">
                                  <span class="label label-default">{{$post->user->name}}</span>
                                  <span class="label label-primary">{{$post->created_at->diffForHumans()}}</span>
                                  <span class="label label-success">{{$post->category->name}}</span>
                              </div>  
                           </div>
                        </div>
                     @endforeach
                     </div>
                  </div>
                </div>
            </div>
        </div>
        <div class="row well">
            <div class="col-md-12">
                <div class="row">
                    <div class="col-md-4 col-md-offset-4">
                        <form action="#" method="post" class="form-horizontal" style="padding-top:10px;">
                            <div class="form-group">
                                <label for="email">Email*:</label>
                                <input type="text" required="" class="form-control" name="subscriber" placeholder="Abonnez Vous!">
                            </div>
                            <div class="form-group">
                                <button class="btn btn-success" type="submit">Valider</button>
                            </div>
                        </form>
                    </div>
                </div>
            </div>
        </div>
@endsection

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

@section('scripts')

@endsection

                            

2- الملف AdminMiddleware.php

فالمجلد app/Http/Middleware غادي نزيدو ملف جديد نسميوه 
AdminMiddleware.php فيه الكود لي كيمنع على المستخدم لي ماشي أدمن الولوج للصفحة الخاصة بالأدمن فكنتحقق واش المستخدم لي تكونيكطا admin يلا مكانش كنردو للصفحة منين جا الكود ديال الملف هو :

                                <?php

namespace App\Http\Middleware;

use Closure;
use Auth;
class AdminMiddleware
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        if(!Auth::user()->is_admin){
            return redirect()->back()->with(['info'=>'Vous n\'avez pas le droit de consulter cette page']);
        }
        return $next($request);
    }
}

                            

3- تفعيل الملف AdminMiddleware.php

باش نفعل ل AdminMiddleware كنمشي للمجلد app/Http منبعد للملف Kernel.php فالجدول routeMiddleware  كنزيد هاد السطر:

                                'admin' => \App\Http\Middleware\AdminMiddleware::class,
                            

4- الملف routes/web.php

فالمجلد routes فيه الملف web.php هادا ملف ديال les routes ديالنا ولي فيهم محددين les urls ديال كل صفحة عندنا وهنا خدمنا بل admin Middleware ديالنا بحيث حددنا الروابط لي محميين بها ولي ميمكن فقط للأدمن الولوج لهم الكود ديال الملف هو :

                                    <?php
use App\Category;
use App\Post;
use App\Tag;
/*
|--------------------------------------------------------------------------
| 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('/',[
    'uses' => 'HomeController@index',
    'as'=> 'index'
]);
Route::get('/panel','PostsController@index');
Route::get('/users/login',[
    'uses'=>'UsersController@login',
    'as'=>'users.login'
]);
Route::get('/users/logout',[
    'uses'=>'UsersController@logout',
    'as'=>'users.logout'
]);
Route::post('/users/login',[
    'uses'=>'UsersController@auth',
    'as'=>'users.auth'
]);
Route::get('/post/{slug}/show',[
    'uses'=>'PostsController@show',
    'as'=>'post.show'
]);
Route::get('/post/{id}/category',[
    'uses'=>'PostsController@postByCategory',
    'as'=>'post.by.category'
]);
Route::group(['middleware'=>'auth'],function(){
    Route::get('/user/profile',[
        'uses'=>'ProfilesController@index',
        'as'=>'user.profile'
    ]);
    Route::post('/user/profile/update',[
        'uses'=>'ProfilesController@update',
        'as'=>'user.profile.update'
    ]);
});
Route::group(['middleware'=>'admin'],function(){
    Route::get('/user/add/admin/{id}',[
        'uses' => 'UsersController@addAdmin',
        'as'=>'user.add.admin'
    ]);
    Route::get('/category/create',function(){
        return view('admin.categories.add');       
    });
    Route::get('/user/remove/admin/{id}',[
        'uses' => 'UsersController@removeAdmin',
        'as'=>'user.remove.admin'
    ]);
    Route::get('/user/delete/{id}',[
        'uses'=>'UsersController@destroy',
        'as'=>'user.delete'
    ]);
    Route::get('/tag/create',function(){
        return view('admin.tags.add');       
    });
    Route::get('/post/deleted',function(){
        return view('admin.posts.deleted')->with('postTrashed',Post::onlyTrashed()->get());
    });
    Route::get('/posts/kill/{id}',[
        'uses'=>'PostsController@killPost',
        'as'=>'posts.kill'
    ]);
    Route::get('/posts/restore/{id}',[
        'uses'=>'PostsController@restore',
        'as'=>'posts.restore'
    ]);
    Route::get('/post/create',function(){
        return view('admin.posts.add')->with(['categories'=>Category::all(),'tags'=>Tag::all()]);   
    });
    Route::post('/categories/{id}',[
        'uses'=>'CategoriesController@update',
        'as'=>'categories.update'
    ]);
    Route::get('/categories/{id}',[
        'uses'=>'CategoriesController@destroy',
        'as'=>'categories.destroy'
    ]);
    Route::post('/tags/{id}',[
        'uses'=>'TagsController@update',
        'as'=>'tags.update'
    ]);
    Route::get('/tags/{id}',[
        'uses'=>'TagsController@destroy',
        'as'=>'tags.destroy'
    ]);
    Route::post('/posts/{id}',[
        'uses'=>'PostsController@update',
        'as'=>'posts.update'
    ]);
    Route::get('/posts/{id}',[
        'uses'=>'PostsController@destroy',
        'as'=>'posts.destroy'
    ]);
});
Route::get('/search',function(){
    return view('result')->with(['posts'=>Post::where('title','like','%'.request('search').'%')->get(),'categories'=>Category::all()]);
});
Route::resource('/posts','PostsController');
Route::resource('/users','UsersController');
Route::resource('/categories','CategoriesController');
Route::resource('/tags','TagsController');
                                


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

بحث في الموقع


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