موقع كراء سيارات بإستعمال laravel الجزء الرابع

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

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


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


فالمجلد views زيد مجلد جديد سميه includes فيه زيد جوج ملفات واحد header.blade.php وآخر footer.blade.php ف header.blade.php كاين القائمة ديالنا لي كتمكن من التنقل بين الصفحات وكاين القائمة الخاصة بالمستخدم ولي كتعرض يلا كان مكونيكطي ولي فيها البروفيل وكاين القائمة لي كتعرض يلا كان المستخدم مكونيكطي وأيضا عندو صفة ادمين ولي فيها جدول السيارات المستخدمين والحجوزات الكود ديال الملف هو:

                                    
                                        <nav class="navbar navbar-default">
  <div class="container-fluid">
    <!-- Brand and toggle get grouped for better mobile display -->
    <div class="navbar-header">
      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
        <span class="sr-only">Toggle navigation</span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
      </button>
      <a class="navbar-brand" href="#">RentCar.com</a>
    </div>
    <!-- Collect the nav links, forms, and other content for toggling -->
    <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
      <ul class="nav navbar-nav">
        <li class="active"><a href="{{route('home')}}">Accueil <span class="sr-only">(current)</span></a></li>
        <li><a href="{{route('cars.index')}}">Voitures</a></li>
        <li class="dropdown">
          <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Compte <span class="caret"></span></a>
          <ul class="dropdown-menu">
          @if(!Auth::check())
            <li><a href="{{url('/login')}}">Connexion</a></li>
            <li><a href="{{route('users.create')}}">Inscription</a></li>
          @else
            <li><a href="{{route('users.show',Auth::user()->id)}}">Profile</a></li>
            <li role="separator" class="divider"></li>
            <li><a href="{{route('users.logout')}}">Déconnexion</a></li>
          @endif
          </ul>
        </li>
        @if(Auth::check() && Auth::user()->isAdmin)
        <li class="dropdown">
          <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Admin <span class="caret"></span></a>
          <ul class="dropdown-menu">
            <li><a href="{{route('admin.index')}}">Voitures</a></li>
            <li><a href="{{route('commands.index')}}">Commandes</a></li>
            <li><a href="{{route('users.index')}}">Inscrits</a></li>
            <li role="separator" class="divider"></li>
            <li><a href="{{route('users.logout')}}">Déconnexion</a></li>
          </ul>
        </li>
        @endif
      </ul>
    </div><!-- /.navbar-collapse -->
  </div><!-- /.container-fluid -->
</nav>
                                    
                                

2- الملف layout-main.blade.php


فالمجلد includes زيد ملف جديد سميه layout-main.blade.php هادا هو الملف لي غادي يربط الصفحات ديالنا بملفات css و js وغادي يكون هو الملف الأساسي ديال كل الصفحات الكود ديال الملف هو :

                                    
                                        <!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>RentCar.com</title>
    <!-- Latest compiled and minified CSS -->
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
    <link rel="stylesheet" href="{{URL::to('css/main.css')}}">
    @yield('styles')
</head>
<body>
@yield('header')
<div class="container">
    @yield('content')
</div>
@yield('footer')
<!-- jQuery is required -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<!-- UIkit JS -->
<!-- Latest compiled and minified JavaScript -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
@yield('scripts')
</body>
</html>
                                    
                                

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


فالمجلد views زيد ملف جديد سميه index.blade.php هادي هي الصفحة الرئيسية ديالنا لي فيها الفورم لي كترسل القيمة ديال الحقل بحث لfonction search لي فHomeController وكتستقبل النتيجة وفيها ايضا العرض ديال كل السيارات لي فقاعدة البيانات والسيارات لي ممكرياش و لي كنستقبلهم من لfonction index لي فHomeController وكنخدم ب foreach باش كنعرض كل معلومة فبلاصتها الكود ديال الملف هو:

                                      
                                        @extends('includes.layout-main')

@section('styles')

@endsection

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

@section('content')
@if(Session::has('fail'))
    <div class="alert alert-danger">
        {{Session::get('fail')}}
    </div>
@endif
@if(Session::has('success'))
    <div class="alert alert-success">
        {{Session::get('success')}}
    </div>
@endif
<div class="row">
    <div class="col-md-3">
        <div class="panel panel-primary" style="margin-top:30px">
            <h4 class="panel-heading" style="margin-top:-1px">Rechercher</h4>
            <form action="{{route('search')}}" method="post" style="padding:20px;">
                <div class="form-group">
                    <label for="marque">Marque:*</label>
                    <input type="text" class="form-control" name="marque" placeholder="Entrer une marque">
                    <input type="hidden" name="_token" value="{{Session::token()}}">
                </div>
                <div class="form-group">
                    <input type="submit" class="btn btn-primary" name="submit" value="Valider">
                </div>
            </form>
        </div>
    </div>
    <div class="col-md-5 col-offset-md-1">
        <div class="panel panel-primary" style="margin-top:30px">
            <h4 class="panel-heading" style="margin-top:-1px">Toutes les voitures</h4>
            @if(count($cars) > 0)
                @foreach($cars as $car)
                <div class="media" style="padding:20px;">
                    <div class="media-left">
                        <a href="{{route('cars.show',$car->id)}}">
                        <img class="media-object" src="{{URL::to('images/'.$car->image)}}" alt="..." height="50" width="50">
                        </a>
                    </div>
                    <div class="media-body">
                        <h4 class="media-heading text-info">{{$car->marque}}</h4>
                        <span class="label label-primary">Model:{{$car->model}}</span>
                        <span class="label label-danger">Type:{{$car->type}}</span>
                    </div>
                </div>
                @endforeach
            @else
            <div class="alert alert-info">Aucune Voiture</div>
            @endif
        </div>
    </div>
    <div class="col-md-3">
        <div class="panel panel-primary" style="margin-top:30px">
            <h4 class="panel-heading" style="margin-top:-1px">Voitures Disponibles</h4>
            <ul class="list-group">
            @if(count($dispo) > 0)
                @foreach($dispo as $car)
                    <li class="list-group-item">
                    <div class="media-left">
                        <a href="{{route('cars.show',$car->id)}}">
                        <img class="media-object" src="{{URL::to('images/'.$car->image)}}" alt="..." height="50" width="50">
                        </a>
                    </div>
                    <div class="media-body">
                        <h4 class="media-heading text-info">{{$car->marque}}</h4>
                        <span class="label label-primary">Model:{{$car->model}}</span>
                        <span class="label label-danger">Type:{{$car->type}}</span>
                    </div> 
                    </li>
                @endforeach
            @else
            <div class="alert alert-info">Aucune Voiture</div>
            @endif
            </ul>
        </div>
    </div>
</div>
@endsection

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

@section('scripts')

@endsection
                                      
                                    

4- الملف AdminController.php


كنمشي ل app/Http/Controllers كنزيد ملف جديد كنسميه AdminController.php لي غادي تكون فيه fonction index لي كتسترجع السيارات لي عندنا فقاعدة البيانات وكترسلهم للملف index ديال السيارات ديال الأدمن ولي غادي نزيدوه منبعد ثم كاين fonction create كتوجه الأدمن للملف الخاص بإضافة سيارة ولي غادي نزيدوه حتى هو منبعد الكود ديال الملف هو :

                                        
                                            <?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Car;
class AdminController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        //
        $cars = Car::all();
        return view('admin.cars.index',compact('cars'));
    }

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

}
                                        
                                    

5- الملف web.php


يلا كنتي تليشارجيتي ل version < 5.2 ديال laravel غادي تمشي للمجلد app/Http وفالملف routes.php كاين les routes ديالنا ولي فيهم محددين les urls باش خدمنا ولي كيديو لles fonctions لي زدنا فles controlleurs دياولنا ويلا تليشارجيتي version > 5.2 غادي تلقى مجلد سميتو routes فيه ملف سميتو web.php فيه كاين les routes ديالنا وكنخدمو بل auth ولي هي Middleware كتمنع على شي مستخدم ممكونيكطيش يدخل لرابط معين وكيبقالك مهمة هي تمنع على لي مكونيكطي وماشي ادمين يزيد او يمسح سيارة وكلشي كاين ف la documentation www.laravel.com وباش تخدم هاد Middleware كتمشي للمجلد app/Exceptions وللملف Handler.php وكتغير هادالسطر ;(('return redirect()->guest(route('users.login الكود ديال الملف هو :

                                        
                                            <?php

/*
|--------------------------------------------------------------------------
| 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'=>'home'
]);
Route::post('/search',[
    'uses'=>'HomeController@search',
    'as'=>'search'
]);
Route::resource('cars','CarsController');
Route::resource('commands','CommandsController');
Route::resource('admin','AdminController');
Route::resource('users','UsersController');
Route::get('/register',function(){
    return view('cars.view');
});
Route::get('/login',function(){
    return view('users.login');
});
Route::post('/login',[
    'uses'=>'UsersController@login',
    'as'=>'users.login'
]);
Route::group(['middleware' => ['auth']], function () {
    Route::post('/delete/command/{id}',[
        'uses'=>'UsersController@deleteCommand',
        'as'=>'user.command.destroy'
    ]);
    Route::get('/logout',[
        'uses'=>'UsersController@logout',
        'as'=>'users.logout'
    ]);
    Route::get('/delete/car/{id}',[
    'uses'=>'CarsController@destroy',
    'as'=>'cars.destroy'
    ]);
    Route::get('/delete/{id}',[
        'uses'=>'UsersController@destroy',
        'as'=>'users.destroy'
    ]);
    Route::get('/delete/{id}',[
        'uses'=>'CommandsController@destroy',
        'as'=>'commands.destroy'
    ]);
    Route::get('/delete/{id}',[
        'uses'=>'UsersController@destroy',
        'as'=>'users.destroy'
    ]);
});
                                        
                                    

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