الجزء الأول  Laravel Authentification


Laravel هي وحدة من بزاف ديال php frameworks لي كاينين فالوقت الحاضر تخلقت ف 2011 بالرغم من أنها جديدة إلا أنها استاطعت فظرف وجيز تحتل الصدارة كأحسن framework فهاد الدرس غادي نتعلمو كيفاش نتبثوا Laravel ونخلقو قاعدة بيانات لتخزين معلومات على المستخدمين و المستخدمين المسجلين غادي يتمكنوا من الدخول ويستافدو من ميزات متعددة. الناس لي عندهم قاعدة معلومات عن php غادي يلقاو الدرس فالمتناول اما الناس لي مبتدئين فكنصحهم بتعلم أساسيات ال php أولا.

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

-تثبيت Laravel وإنشاء قاعدة للبيانات

أولا شيء غادي تديرو هو تثبيت wamp server منبعد غادي تثبت composer لي غادي يمكنك من تثبيت laravel. غادي تفتح cmd وتدير composer create-project --prefer-dist laravel/laravel blog الإسم ديال المشروع هو blog من بعد غادي تخلق قاعدة بيانات ف phpadmin وتسميها blog فالملف env. غادي تدير الإتصال ما .بين قاعدة البيانات و المشروع ديالنا

                                <?php

APP_ENV=local
APP_DEBUG=true
APP_KEY=base64:a9X2af2Lhqfy7O/MiydeKwd4kXvZF96vzfrWgsiK4Tk=
APP_URL=http://localhost

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=blog
DB_USERNAME=root
DB_PASSWORD=

CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

MAIL_DRIVER=smtp
MAIL_HOST=mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
DROPZONER_UPLOAD_PATH=images/
                            

-إنشاء جدول المستخدمين

باش تخلق جدول المستخدمين غادي تفتح cmd من بعد تخدم ب cd وتدير cd c:wamp/www/blog من بعد غادي تدير php artisan migrate غادي تمشي لقاعدة البيانات .غادي تلقا فيها جدول المستخدمين تزاد تقدر تزيد حقول أخرى للمستخدم من الملف لي كاين ف database->migrations->2014_10_12_000000_create_users_table.php وتزيد الحقول لي بغيتي كيما موضح فالكود عاد تدير php artisan migrate

                                <?php

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateUsersTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name');
            $table->string('email')->unique();
            $table->string('password');
            $table->rememberToken();
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::drop('users');
    }
}

                            

-إنشاء أولى الصفحات

باش تشوف الصفحة الرئيسية ديال المشروع كتمشي ل localhost/blog/public ف navigateur ديالك فالملف routes.php غادي تلقا ل function لي كتديك للصفحة welcome. هنا غادي نمسحو الملف welcome.blade.php ونديرو واحد جديد سميتو index.blade.php ف resources->views وغادي نزيدو controller جديد سميتو HomeController.php باستعمال cmd دائما غادي نكتب php artisan make:controller HomeController --resource و ف ل index غادي نعيط للصفحة ديالي index.blade.php

                                <?php

//routes.php code
Route::get('/',[
    'uses'=>'HomeController@index',
    'as'=>'home'
]);
//HomeController.php code
namespace App\Http\Controllers;
class HomeController extends Controller{
    public function index(){
        return view('index');
    }
}
                            

-إنشاء باقي الصفحات

دائما ف resources->views غادي نديرو ملف جديد سميتو layouts وغادي تزيد فيه ملف سميتو index-master.blade.php هاد الملف هو لي غادي يكون الأساس ديال كل الصفحات لي عندنا كلهم غادي يعتمدو عليه غادي نخدمو ب bootstrap باش نقادو الصفحات ديالنا من بعد ما تحمل bootstrap من الموقع الرسمي غادي تزيد ملف سميتو css ف public وغادي تزيد فيه الملف bootstrap.min.css من بعد غادي تزيد ملف خور وتسميه main.css من بعد غادي غادي تزيد ملف سميتو js ف public وغادي تزيد فيه الملف bootstrap.min.js الكود النهائي ديال index-master.blade.php :

                                    <!DOCTYPE html>
<html lang="fr">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
    <title>@yield('title')</title>
 
    <!-- Bootstrap -->
    <link href="{{URL::to('/css/bootstrap.min.css')}}" rel="stylesheet">
    <link rel="stylesheet" href="{{URL::to('/css/main.css')}}">
    @yield('styles')
    <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
    <!--[if lt IE 9]>
      <script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
      <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
    <![endif]-->
  </head>
  <body>
    @yield('header')
    <div class="container">
        @yield('content')
    </div>
    @yield('footer')
    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
    <!-- Include all compiled plugins (below), or include individual files as needed -->
    <script src="{{URL::to('/js/bootstrap.min.js')}}"></script>
    @yield('scripts')
  </body>
</html>
                                

- تكملة الصفحة الرئيسية

دائما ف resources->views غادي نديرو مجلد جديد سميتو includes وغادي تزيد فيه ملف سميتو header.blade.php هاد الملف هو لي غادي يكون الأساس ديال كل الصفحات لي عندنا كلهم غادي تكون عندهم نفس ل Menu من بعد غادي نزيدو ملف آخر سميتو footer.blade.php حتى هو غادي يكون فجميع الصفحات الكود النهائي غادي يكون :

                                    //header.blade.php
<nav class="navbar navbar-default navbar-center">
  <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="{{route('home')}}">Laravel Authentification</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="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="{{route('users.logout')}}">Déconnexion</a></li>
          @else
            <li><a href="{{route('users.login')}}">Connexion</a></li>
            <li><a href="{{route('users.create')}}">Créer un compte</a></li>
          @endif
          </ul>
        </li>
      </ul>
    </div><!-- /.navbar-collapse -->
  </div><!-- /.container-fluid -->
</nav>
//footer.blade.php
<footer>
    <div class="container">
        <ul>
            <li>Laravel Authentification</li>
        </ul>
    </div>
</footer>
                                


بحث في الموقع


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