كيفاش نسجل نعدل ونمسح المعلومات من قاعدة البيانات

فهاد الدرس غادي نشوفو كيفاش يمكنا نسجلوا معلومات فقاعدة البيانات من نبعد نديروا عليها تعديلات وفالآخر نمسحوها هاد الدرس هو تكملة للدروس السابقة ديال Laravel Authentification

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


-الملف Post.php


أول حاجة غادي نديرو هي نزيدو واحد ل Model نفتحو cmd ونمشيو للblog باستعمال الأمر cd c: wamp/www/blog من بعد غادي نكتبو الأمر php artisan make:model Post -m غادي يتزاد عندنا فapp الكود ديال Post.php

                                    
                                        <?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Post extends Model
{
    //
    protected $fillable = ['title','categorie','post'];
    
}
                                    
                                

- الملف PostsController.php


من بعد ما قادينا ل Model غادي نزيدو لController لي غادي يمكنا باش نزيدوا المعلومات فقاعدة البيانات غادي نفتحو cmd ونمشيو للblog باستعمال الأمر cd c: wamp/www/blog من بعد غادي نكتبو الأمر php artisan make:controller PostsController --resource غادي نلقاو لcontroller ديالنا تزاد ف app/http/controllers الكود النهائي ديالو هو:

                                    
                                        <?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Post;
use App\Http\Requests;

class PostsController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        //
       
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        //
        return view('posts.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,[
            'title' => 'required|max:125|unique:posts',
            'categorie' => 'required',
            'post' => 'required|max:1000'
        ]);
        $post = new Post();
        $post->title = $request->title;
        $post->categorie = $request->categorie;
        $post->post = $request->post;
        $post->save();
        return redirect()->route('home')->with(['success'=>'Post ajouté avec succés']);
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        //
        $post = Post::find($id);
        return view('posts.show',compact('post'));
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        //
        $post = Post::findOrFail($id);
        return view('posts.edit',compact('post'));
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request)
    {
        //
        $this->validate($request,[
            'title' => 'required|max:125',
            'categorie' => 'required',
            'post' => 'required|max:1000'
        ]);
        $post = Post::findOrFail($request->id);
        $post->title = $request->title;
        $post->categorie = $request->categorie;
        $post->post = $request->post;
        $post->update();
        return redirect()->route('home')->with(['success'=>'Post modifié avec succés']);
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        //
        $post = Post::findOrFail($id);
        $post->delete();
        return redirect()->route('home')->with(['success'=>'Post supprimé avec succés']);
    }
}
                                    
                                

-ملفات زيادة وتعديل المعلومات


من بعد ما قادينا ل لController غادي نزيدو مجلد نسميوه posts ف resources/views من بعد غادي نزيدو داخل المجلد ملف سميتو create.blade.php لي غادي يمكنا باش نزيدوا لPOST ديالنا وملف آخر نسميوه edit.blade.php لي غادي يمكنا باش نديرو تعديلات على ل POST ديالنا الكود النهائي ديالهم هو:

                                      
                                        //create.blade.php code
@extends('layouts.index-master')

@section('styles')

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

@section('content')
    <div class="container">
        <div class="row">
            <div class="col-md-6 col-md-offset-3">
                @include('includes.info-box')
                <h1 class="text-info">Créer un Post</h1>
                <form action="{{route('posts.store')}}" method="post">
                    <div class="form-group">
                        <label for="title">Title</label>
                        <input type="text" name="title" id="title" placeholder="Titre" class="form-control" value="{{Request::old('title')}}">
                    </div>
                    <div class="form-group">
                        <label for="categorie">Categorie</label>
                        <select name="categorie" id="category_select" class="form-control">
                                <option value="Education">Education</option>
                                <option value="Sport">Sport</option>
                                <option value="Cinema">Cinema</option>
                                <option value="Divers">Divers</option>
                        </select> 
                    </div>
                    <div class="form-group">
                        <label for="post">Post</label>
                        <textarea name="post" id="post" cols="30" rows="10" class="form-control"  placeholder="Post">{{Request::old('post')}}</textarea>
                    </div>
                    <div class="form-group">
                        <button type="submit" class="btn btn-success">Créer Post</button>
                        <input type="hidden" name="_token" value="{{Session::token()}}">
                    </div>
                </form>
            </div>
        </div>
    </div>
@endsection
@section('footer')
    @include('includes.footer')
@endsection
@section('scripts')
    
@endsection
//edit.blade.php code
@extends('layouts.index-master')

@section('styles')

@endsection
@section('header')
    @include('includes.header')
@endsection
@section('content')
    <div class="container">
        <div class="row">
            <div class="col-md-6 col-md-offset-3">
                @include('includes.info-box')
                <h1 class="text-info">Edit Post</h1>
                <form action="{{route('posts.update',['id'=>$post->id])}}" method="post">
                    <div class="form-group">
                        <label for="title">Titre</label>
                        <input type="text" name="title" id="title" placeholder="Titre" class="form-control" value="{{Request::old('title') ? Request::old('title') : isset($post) ? $post->title : ''}}">
                    </div>
                    <div class="form-group">
                        <label for="categorie">Categorie</label>
                        <select name="categorie" id="category_select" class="form-control">
                            <option value="Education">Education</option>
                            <option value="Sport">Sport</option>
                            <option value="Cinema">Cinema</option>
                            <option value="Divers">Divers</option>
                        </select> 
                    </div>
                    <div class="form-group">
                        <label for="post">Post</label>
                        <textarea name="post" id="post" cols="30" rows="10" class="form-control">{{Request::old('post') ? Request::old('post') : isset($post) ? $post->post : ''}}</textarea>
                    </div>
                    <div class="form-group">
                        <button type="submit" class="btn btn-success">Modifier</button>
                        <input type="hidden" name="_token" value="{{Session::token()}}">
                        <input type="hidden" name="id" value="{{$post->id}}">
                    </div>
                </form>
            </div>
        </div>
    </div>
@endsection
@section('footer')
    @include('includes.footer')
@endsection
@section('scripts')
    
@endsection
                                      
                                    

- عرض المعلومات


من بعد ما نزيدو المعلومات ديالنا غادي نحتاجو لعرض كل POST اختارو المستخدم باش يشوفو لهادشي غادي نزيدو ملف فالمجلد posts وغادي نسميوه show.blade.php من بعدغادي نديرو تعديل على الملف الرئيسي لي فviews/index.blade.php غادي نزيدو فيMenu الجزء ديال لposts الكود النهائي ديال هاد الملفات هو:

                                        
                                            //show.blade.php

@extends('layouts.index-master')

@section('title')
    {{$post->title}}
@endsection
@section('header')
    @include('includes.header')
@endsection
@section('content')
    <div class="row">
        <div class="col-md-6 col-md-offset-3">
            @include('includes.info-box')
            <article>
                <h3> {{$post->title}}</h3>
                <span class="label label-info">{{$post->categorie}}</span> |  <span class="label label-warning">{{$post->created_at}}</span>
                <p> {{$post->post}}</p>
            </article>
             <div class="container">
                <a href="{{route('posts.edit',$post->id)}}" class="btn btn-warning">Edit</a>
                <a href="{{route('posts.destroy',$post->id)}}" class="btn btn-danger">Delete</a>
             </div>
        </div>
    </div>   
@endsection
@section('footer')
    @include('includes.footer')
@endsection 
@section('scripts')
   
@endsection

//index.blade.php code

@extends('layouts.index-master')
 
@section('title')
    Laravel Authentification
@endsection
 
@section('styles')
     
@endsection
 
@section('header')
   @include('includes.header')
@endsection
 
@section('content')
      @if(Auth::check())
        <p class="lead">Bienveue <span class="label label-success">{{Auth::user()->name}}</span> vous êtes connectés</p>
      @endif
      <div class="row">
         <div class="col-md-8">
         @include('includes.info-box')
             <div class="panel panel-primary">
                @if(count($posts) == 0) 
                    @foreach($posts as $post)
                        <div class="panel-heading">{{$post->title}}</div>
                        <div class="panel-body">
                            {{$post->post}} <a href="{{route('posts.show',$post->id)}}" class="btn btn-link">Voir</a>
                        </div>
                    @endforeach
                @endif
                <p class="text-primary lead" style="padding:10px 10px 0 10px;">Aucun post trouvé</p>
             </div>
         </div>
      </div>
@endsection
 
@section('footer')
     @include('includes.footer')
@endsection
 
@section('scripts')
 
@endsection
                                        
                                    

- آخر الإضافات


آخر حاجة غادي نزيدو هي routes لي غادي يمكنا باش نتحركوا من صفحة لأخرى الكود ديالهم لي لتحت كيمكن المستخدم باش يزيد المعلومات أو يعدل أو يمسح فقط يلا كان مسجل فقاعدة البيانات والا يتم توجيهو للصفحة الخاصة بتسجيل الدخول الكود النهائي:

                                        
                                            <?php

/*
|--------------------------------------------------------------------------
| Application Routes
|--------------------------------------------------------------------------
|
| Here is where you can register all of the routes for an application.
| It's a breeze. Simply tell Laravel the URIs it should respond to
| and give it the controller to call when that URI is requested.
|
*/

Route::get('/',[
    'uses'=>'HomeController@index',
    'as'=>'home'
]);
Route::resource('/users','UsersController');
Route::get('/login',[
    'uses' => 'UsersController@login',
    'as' => 'users.login'
]);
Route::get('/logout',[
    'uses' => 'UsersController@logout',
    'as' => 'users.logout'
]);
Route::post('/login',[
    'uses' => 'UsersController@auth',
    'as' => 'users.auth'
]);
//posts routes
Route::group(['middleware'=>'auth'],function(){
    Route::resource('/posts','PostsController');
    Route::post('/post/{id}',[
        'uses' => 'PostsController@update',
        'as' => 'posts.update'
    ]);
    Route::get('/post/delete/{id}',[
        'uses' => 'PostsController@destroy',
        'as' => 'posts.destroy'
    ]);
});

                                        
                                    

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