You are on page 1of 161

~1~

‫وزارة التعليم العالي والبحث العلمي‬


‫كلية الحدباء الجامعة‬
‫القسم ‪ :‬علم الحاسوب‬
‫المرحلة ‪ :‬الرابعة‬

‫ر‬
‫بأشاف الدكتور‬ ‫اعداد الطالبة‬
‫ماهر خلف حسين‬ ‫رحمة لبيب صابر الطائي‬

‫~‪~2‬‬
Table of contents
Laravel-Overview ................................................................................................. 5
Laravel – Features ............................................................................................... 5
Server requirements ........................................................................................ 6
What are the uses of Laravel .............................................................................. 7
Laravel-installation .............................................................................................. 8
Laravel-Application Structure –Root Directory ............................................... 10
App Directory ..................................................................................................... 11
Laravel-Configuration........................................................................................ 13
Environmental Configuration............................................................................ 14
Laravel-PHPMysqladmi .................................................................................. 15
Laravel-Tables ................................................................................................... 17
Laravel-Model .................................................................................................... 19
Laravel-Controller+Web .................................................................................... 21
Laravel-Navbar-Posts ........................................................................................ 24
Laravel-Navbar-Categories ............................................................................... 30
Laravel-Web ....................................................................................................... 33
Laravel-Migrations ............................................................................................. 35
Laravel-Database-retrieval ................................................................................ 37
Laravel-Posts-Softdelete ................................................................................... 51
Laravel-Many To Many ...................................................................................... 63
Laravel-One To One........................................................................................... 77
Laravel-Nvbar-Profile ............................................................................................ 78
Laravel-Navbar-Users ........................................................................................... 85
Laravel-Navbar-Settings ...................................................................................... 97

~3~
Table of contents
Laravel-Dashboard .......................................................................................... 104
Laravel – Header .............................................................................................. 109
Laravel-index ................................................................................................ 113
Laravel-Footer.................................................................................................. 120
Laravel-Category ............................................................................................. 122
Laravel-Tag ...................................................................................................... 129
Laravel-AboutUs .............................................................................................. 143
Laravel-Contacts.............................................................................................. 147
Laravel-Search ................................................................................................. 152
Laratrust ........................................................................................................... 159

~4~
‫‪Laravel-Overview‬‬

‫‪Introduction‬‬
‫‪ Laravel‬هو إطار عمل ‪ MVC‬مع الحزم والترحيالت و ‪. Artisan CLI.‬‬
‫يقدم ملف ‪ Laravel‬مجموعة قوية من األدوات وبنية تطبيق تضم العديد من أفضلها ‪.:‬‬
‫‪ CodeIgniter‬و ‪ Yii‬و ‪ ASP.NET MVC‬و ‪ Ruby on Rails‬و ‪ Sinatra‬و‬
‫‪ Laravel‬هو إطار عمل مفتوح المصدر‪.‬‬
‫يحتوي على مجموعة غنية جدًا من الميزات التي ستعزز‪.:‬‬
‫‪-1‬سرعة تطوير الويب‪ .‬إذا كنت معتادًا على ‪ Core PHP‬و ‪ ، Advanced PHP‬فإن‬
‫‪Laravel‬‬
‫سيجعل مهمتك أسهل‪.‬‬
‫‪ -2‬سيوفر الكثير من الوقت إذا كنت تخطط لتطوير موقع ويب‬
‫من الصفر‪.‬‬
‫ضا‪ .‬يمنع‬
‫‪ -3‬ليس ذلك فحسب ‪ ،‬فالموقع المبني في ‪ Laravel‬آمن أي ً‬
‫مختلف الهجمات التي يمكن أن تحدث على مواقع الويب‪.‬‬

‫‪Laravel – Features‬‬
‫‪Laravel offers the following key features:‬‬
‫) يقدم ‪ laravel‬المميزات الرئيسية التالية (‬
‫•‬ ‫‪Modularity‬‬
‫•‬ ‫‪Testability‬‬
‫•‬ ‫‪Routing‬‬
‫•‬ ‫‪Configuration management‬‬
‫•‬ ‫)‪Query builder and ORM (Object Relational Mapper‬‬
‫•‬ ‫‪Schema builder, migrations, and seeding‬‬
‫•‬ ‫‪Template engine‬‬
‫•‬ ‫‪E-mailing‬‬
‫~‪~5‬‬
‫•‬ ‫‪Authentication‬‬
‫•‬ ‫‪Redis‬‬
‫•‬ ‫‪Queues‬‬
‫•‬ ‫‪Event and command bus‬‬

‫ماهو الشئ الذي تحتاجه قبل البدء بال‪laravel‬‬


‫‪-1‬يجب ان يكون لديك معرفة في اساسيات ‪HTML+CSS+Bootstrap+PHP‬‬
‫‪-2‬يجب ان يكون لديك سيرفر وفيه ‪Apache,Mysql,php‬‬
‫‪-3‬يجب ان يكون لديك معرفة بال ‪OOP‬‬

‫‪Server requirements‬‬
‫* ‪ :.PHP‬لكي يقوم بتشغيل ‪ laravel‬يجب ان تتوفر فيه المواصفات التالية‪:‬‬

‫‪PHP >= 7.2.5‬‬


‫‪ -1‬يجب ان يكون ‪ php‬إصداره ‪ 7.2‬او اكثر ‪.‬‬
‫تقوم بالدخول الى موجه االوامر ‪ cmd‬اختصار ل)‪ )command prompt‬الموجود في‬
‫الحاسبة وتقوم بكتابة االمر ‪ php --version‬سوف يظهر لك اصدار ‪php‬‬

‫‪ -2‬يجب ان يكون مفعل فيه ‪ extensions‬التالية‪:‬‬


‫لكي تتاكد من ان جميع الملحقات موجودة لديك داخل السيرفر تقوم بالدخول أيضا الى‬
‫‪ cmd‬وتكتب االمر ‪php -m‬‬
‫‪BCMath PHP Extension‬‬
‫‪Ctype PHP Extension‬‬
‫‪Fileinfo PHP extension‬‬

‫~‪~6‬‬
JSON PHP Extension
Mbstring PHP Extension
OpenSSL PHP Extension
PDO PHP Extension
Tokenizer PHP Extension
Ctype PHP Extension

What are the uses of Laravel:


‫ األصلي و تسهل‬php‫ هو مجموعة من الصفحات تستخدم ال‬:PHP FRAMWORK -1
‫ النها تقوم بتجهيز الدالة مع خصائصها أي اننا ال نقوم ببناء الدالة‬laravel ‫وتسرع العمل على‬
.‫من الصفر‬

: MVC -2

‫ وهي التي سوف تنفذ فيها جميع االيعازات الخاصة‬CLI ‫ هو واجهة‬: COMPOSER -3
.‫بالتطبيق‬

~7~
‫‪Laravel-Installation‬‬

‫واالن قبل البدء بمشروعك تأكد من تثبيت ‪ Composer‬على نظامك قبل تثبيت ‪Laravel‬‬
‫لديك‪:‬‬
‫الخطوة األولى‪ :‬قم بزيارة عنوان ‪ URL‬التالي وقم بتنزيل ‪ composer‬لتثبيته على نظامك‬
‫‪https://getcomposer.org/download/‬‬

‫الخطوة الثانية‪ :‬بعد تثبيت ‪ ، Composer‬تحقق من التثبيت عن طريق كتابة أمر‬


‫‪ Composer‬في موجه األوامر ‪ cmd‬كما هو موضح في لقطة الشاشة التالية‪.‬‬

‫دليال جديدًا في أي مكان في نظامك لمشروع ‪ Laravel‬الجديد‪ .‬بعد ذلك‬‫الخطوة الثالثة‪ :‬أنشئ ً‬
‫انتقل إلى المسار حيث أنشأت الدليل الجديد واكتب األمر التالي هناك لتثبيت ‪ Laravel.‬وانشاء‬
‫ملف باسم ‪Platformiq‬‬
‫‪composer create-project laravel/laravel –prefer-dist laravel/laravel Platformiq‬‬

‫الخطوة الرابعة‪ :‬سيقوم األمر أعاله بتثبيت ‪ Laravel‬في الدليل الحالي‪ .‬ابدأ خدمة ‪Laravel‬‬
‫بتنفيذ األمر التالي‪.‬‬
‫‪php artisan serve‬‬

‫~‪~8‬‬
‫الخطوة الخامسة‪ :‬بعد تنفيذ األمر أعاله ‪ ،‬ادخل الى ملف ‪ xampp‬ثم ‪ htdocs‬ثم‬
‫‪ platformiq‬وتقوم بتشغيل السيرفر وسترى شاشة كما هو موضح أدناه‪:‬‬

‫الخطوة السادسة‪ :‬انسخ عنوان ‪ http://127.0.0.1:8000 URL‬في لقطة الشاشة أعاله‬


‫وافتح عنوان ‪ URL‬هذا في المتصفح‪ .‬إذا رأيت الشاشة التالية ‪ ،‬فهذا يعني أنه تم تثبيت‬
‫‪ Laravel‬بنجاح ☺☺‬

‫~‪~9‬‬
Laravel-Application Structure

Root Directory
‫ على مجلدات وملفات مختلفة كما هو موضح في الشكل‬Laravel ‫يحتوي الدليل الجذر في‬
:‫التالي‬

app: This directory contains the core code of the application.


. ‫ يحتوي هذا الدليل على الكود األساسي للتطبيق‬:‫التطبيق‬

bootstrap: This directory contains the application


bootstrapping script.
. ‫ للتطبيق‬bootstrapping ‫ يحتوي هذا الدليل على البرنامج النصي‬:bootstrap

config: This directory contains configuration files of


application.
.‫ يحتوي هذا الدليل على ملفات التكوين للتطبيق‬:‫التكوين‬

~ 10 ~
database: This folder contains your database migration and
seeds.
.‫ يحتوي هذا المجلد على ترحيل قاعدة البيانات والبذور‬:‫قاعدة البيانات‬

public: This is the application’s document root. It starts the


Laravel application. It also contains the assets of the
application like JavaScript, CSS, Images, etc.
‫ضا على أصول‬ً ‫يحتوي أي‬Laravel. ‫ يبدأ تطبيق‬.‫ هذا هو جذر مستند التطبيق‬:‫عام‬
.‫ والصور وما إلى ذلك‬CSS ‫ و‬JavaScript ‫التطبيق مثل‬

resources: This directory contains raw assets such as the


LESS & Sass files, localization and language files, and
Templates that are rendered as HTML.
‫ وملفات‬LESS & Sass ‫ يحتوي هذا الدليل على أصول أولية مثل ملفات‬:‫الموارد‬
. HTML ‫الترجمة واللغة والقوالب التي يتم عرضها بتنسيق‬

storage: This directory contains App storage, like file


uploads etc. Framework storage (cache), and application-
generated logs.
‫ مثل تحميالت الملفات وما إلى‬، ‫ يحتوي هذا الدليل على تخزين التطبيقات‬:‫التخزين‬
.‫ والسجالت التي ينشئها التطبيق‬، )‫ تخزين اإلطار (ذاكرة التخزين المؤقت‬.‫ذلك‬

test: This directory contains various test cases.


.‫ يحتوي هذا الدليل على حاالت اختبار مختلفة‬:‫اختبار‬

vendor: This directory contains composer dependencies.


. ‫ يحتوي هذا الدليل على تبعيات المؤلف‬:‫البائع‬
App Directory :
‫ يحتوي على مجموعة متنوعة من األدلة اإلضافية الموضحة أدناه‬.‫هذا هو دليل التطبيق‬
Console: All the artisan commands are stored in this
directory.
.‫ يتم تخزين جميع أوامر الحرفيين في هذا الدليل‬:‫ وحدة التحكم‬o

Events: This directory stores events that your application


can raise. Events may be used to alert other parts of your
application that a given action has occurred, providing a
great deal of flexibility and decoupling.

~ 11 ~
‫ يمكن استخدام‬.‫ يخزن هذا الدليل األحداث التي يمكن لتطبيقك رفعها‬:‫ األحداث‬o
، ‫األحداث لتنبيه أجزاء أخرى من التطبيق الخاص بك إلى حدوث إجراء معين‬
‫كبيرا من المرونة والفصل‬
ً ‫قدرا‬
ً ‫مما يوفر‬

Exceptions: This directory contains your application's


exception handler and is also a good place to stick any
exceptions thrown by your application.
‫ يحتوي هذا الدليل على معالج استثناءات التطبيق الخاص بك وهو‬:‫ االستثناءات‬o
‫ضا مكان جيد لاللتزام بأي استثناءات يطرحها تطبيقك‬ً ‫أي‬

Http: This directory contains your controllers, filters, and


requests.
.‫ يحتوي هذا الدليل على وحدات التحكم والفالتر والطلبات‬o

Jobs: This directory contains the queueable jobs for your


application.
‫ يحتوي هذا الدليل على الوظائف القابلة لالختيار للتطبيق الخاص‬:‫ الوظائف‬o
.‫بك‬
Listeners: This directory contains the handler classes for
your events. Handlers receive an event and perform logic
in response to the event being fired. For example, a
UserRegistered event might be handled by a
SendWelcomeEmail listener.
‫ تتلقى المعالجات‬.‫ يحتوي هذا الدليل على فئات المعالج ألحداثك‬:‫ المستمعون‬o
‫ قد تتم‬، ‫ على سبيل المثال‬.‫حدثًا وتنفذ منطقًا ردًا على الحدث الذي يتم إطالقه‬
SendWelcome ‫ بواسطة مستمع‬UserRegistered ‫معالجة حدث‬
Email

Policies: This directory contains various policies of the


application.
.‫ يحتوي هذا الدليل على سياسات متنوعة للتطبيق‬:‫ السياسات‬o

Providers: This directory contains various service


providers.
.‫ يحتوي هذا الدليل على العديد من مقدمي الخدمات‬:‫ الموفرون‬o

~ 12 ~
Laravel-Configuration

Basic Configuration )‫)التكوين األساسي‬

• After installing Laravel, the first thing we need to do is to set


the write permission for the directory storage and
bootstrap/cache.
‫ فإن أول شيء علينا القيام به هو تعيين إذن الكتابة لتخزين الدليل و‬، Laravel ‫بعد تثبيت‬
bootstrap / cache.

• Generate Application key to secure session and other


encrypted data. If the root directory doesn’t contain the .env file
then rename the .env.example to .env file and execute the
following command where you have installed Laravel. The newly
generated key can be seen in the .env file.

‫ إذا كان الدليل الجذر ال يحتوي‬.‫إنشاء مفتاح التطبيق لتأمين الجلسة والبيانات المشفرة األخرى‬
‫ وتنفيذ األمر‬env. ‫ إلى ملف‬env.example. ‫ فقم بإعادة تسمية الملف‬، env. ‫على ملف‬
env.. ‫يمكن رؤية المفتاح الذي تم إنشاؤه حديثًا في ملف‬Laravel. ‫التالي حيث قمت بتثبيت‬
php artisan key:generate‫من خالل تنفيذ االمر‬

‫ضا تكوين اإلعدادات المحلية والمنطقة الزمنية وما إلى ذلك للتطبيق في ملف‬
ً ‫يمكنك أي‬
config / app.php.

~ 13 ~
‫)التكوين البيئي( ‪Environmental Configuration‬‬

‫يوفر ‪ Laravel‬تسهيالت لتشغيل تطبيقك في بيئة مختلفة مثل االختبار واإلنتاج وما إلى ذلك‪.‬‬
‫يمكنك تكوين بيئة تطبيقك في ملف ‪ env.‬الخاص بالدليل الجذر لتطبيقك‪ .‬إذا قمت بتثبيت‬
‫‪ Laravel‬باستخدام ‪ ، composer‬فسيتم إنشاء هذا الملف تلقائيًا‪.‬‬

‫الحظ النص الذي تحته خط باللون االزرق في الصورة أعاله‪ .‬تم تعيين متغير البيئة المحلية‪.‬‬
‫ضا تغييرها إلى اإلنتاج أو االختبار حسب متطلباتك‪.‬‬
‫يمكن أي ً‬

‫‪Database Configuration‬‬

‫يمكن تكوين قاعدة بيانات التطبيق الخاص بك من ملف ‪config / database.php.‬‬


‫ضا‬
‫يمكنك تعيين معلمات التكوين التي يمكن استخدامها بواسطة قواعد بيانات مختلفة ويمكنك أي ً‬
‫تعيين المعلمة االفتراضية الستخدامها‪.‬‬

‫~ ‪~ 14‬‬
‫‪Laravel-PHPMysqladmin‬‬

‫‪Laravel-Database‬‬

‫واالن بعد التعرف على ‪ laravel‬نبدأ بربط ‪ laravel‬مع ‪phpmyadmin‬‬

‫‪ -1‬ربط ‪ laravel‬مع ‪ phpmyadmin‬تذهب الى برنامج ‪ xampp‬ونعمل قاعدة بيانات‬


‫جديدة باسم مثال ‪platformiq‬‬

‫‪ -2‬ثم نذهب الى ‪ privileges‬لتكوين حساب جديد لقاعدة البيانات التي قمت بأنشاءها‬
‫عن طريق الذهاب الى ‪add user account‬‬

‫االن قمنا بإدخال اسم ورمز المرور جديد وهو ‪ rahmaaltaee/12345‬لقاعدة البيانات كما‬
‫موضح في لقطة الشاشة‬

‫‪ ‬للتأكد من ان ‪ laravel‬يعمل نكتب هذا االمر ‪php artisan serve‬‬

‫~ ‪~ 15‬‬
‫‪ -3‬بعد ذلك دخل الى ملف ‪ platformiq‬ثم ملف ‪ env‬ونقوم بتغيير ‪ database‬و‬
‫‪ username‬و ‪ password‬الى نفس االسم والرمز الذي وضعناه في قاعدة البيانات‬
‫أعاله‪.‬‬

‫‪ -4‬بعد تكوين قاعدة البيانات ‪ platformiq‬نذهب الى ملف ‪ platformiq‬ثم ملف‬


‫‪ database‬ثم ملف ‪migrations‬‬

‫فنالحظ وجود ملفين خاصة ‪:‬األول ‪ users‬لخلق وانشاء مستخدمين‬


‫والثاني ‪ password_ resets‬العادة ضبط كلمة المرور كما موضح بلقطة الشاشة‬

‫‪ ‬نكتب االمر ‪ php artisan make:auth‬في ‪cmd‬‬

‫‪ -5‬ندخل الى ملف األساسي ‪ platformiq‬ثم ملف ‪ app‬ثم ملف ‪ Http‬ثم ملف‬
‫‪ Controllers‬تالحظ وجود ملف جديد اسمه ‪ Auth‬فيه مجموعة من الملفات وهي‪:‬‬

‫~ ‪~ 16‬‬
‫نكتب امر تشغيل السيرفرمرة اخرى وهو‪php artisan serve‬‬
‫ثم نذهب الى متصفح االنترنت مثل ‪ google chrome‬ونكتب فية الرابط االتي‬
‫‪ http://localhost:8000‬نالحظ ظهور ‪ login‬و‪register‬‬

‫اذا ذهبنا الى ملف ‪ platformiq‬ثم ملف ‪ resources‬ثم ملف ‪ views‬ثم ملف ‪auth‬‬
‫نالحظ وجود ملف ‪ login‬و‪ register‬الذي ظهر في الصفحة الرئيسية أعاله وكما موضح‬
‫بالصورة‪.‬‬

‫‪Laravel-Tables‬‬
‫نقوم بأنشاء جدول داخل قاعدة البيانات من خالل كتابة االمر ‪php artisan migrate‬‬

‫فنالحظ تم انشاء جداول جديدة في قاعدة البيانات وفي ملف ‪ migrations‬وتمت العملية‬
‫بنجاح ☺☺‬

‫~ ‪~ 17‬‬
‫فنالحظ وجود الجدول في قاعدة البيانات كما موضح بلقطة الشاشة‪:‬‬

‫االن نعمل تسجل دخول جديد نذهب الى ‪ register‬ونقوم بأدخال اسم مثال‪ Rahma‬ورمز‬
‫الدخول مثال‪12345678‬‬

‫نضغط على ‪ Register‬فتظهر لنا‬

‫تم تسجيل الدخول بنجاح‬


‫وتم إضافة االسم الى قاعدة البيانات‬

‫~ ‪~ 18‬‬
Laravel-model

‫ فتكون‬mysql‫ و‬database ‫ وذلك لكي نستطيع الوصول الى‬modle ‫يجب ان نقوم بانشاء‬
modle ‫عن طريق‬
php artisan make:model post -m :‫من خالل كتابة االمر التالي‬

.‫ هو اسم الموديل المراد انشاءه في قاعدة البيانات ويكون دائما مفرد‬post


post ‫ لعمل جدول في قاعدة البيانات باسم‬-m

Category ‫وبنفس الطريقة أعاله نقوم بأضافة موديل ثاني باسم‬

‫ قام بإضافة ملف‬platformiq /database/migrations ‫فنالحظ داخل ملف‬


‫ الذي قمنا بأنشاءه‬Categories , posts

:‫ الحقول التي نحتاجها للمشروع كما في الكود التالي‬create_posts_table ‫ونكتب في‬


<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreatePostsTable extends Migration
{
public function up()
{
Schema::create('posts', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('title');
$table->string('content');
$table->string('category_id');
$table->string('featrued');
$table->timestamps();
});

~ 19 ~
}
public function down()
{
Schema::dropIfExists('posts');
}
}

‫ و‬post ‫ نالحظ تم انشاء ملف موديل‬platformiq /app ‫وعندما نذهب الى ملف‬
category

platformiq /app ‫ ندخل الى ملف‬category ‫ مع ملف‬post ‫االن نقوم بربط ملف‬
: ‫ ونقوم بكتابة الكود الموجود داخل المستطيل‬post.php ‫فندخل الى ملف الموديل‬
<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class post extends Model


{
public function category()
{
return $this->belongsTo('App\Category');
}
}

: ‫ ونقوم بكتابة الكود الموجود داخل المستطيل‬category.php ‫وندخل الى ملف الموديل‬
<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Category extends Model


{
public function posts()
{
return $this->hasMany('App\Post');
}
}

~ 20 ~
Laravel- Controllers
Laravel-Controller+web

‫ الذي يمثل حلقة وصل بين‬controller ‫لكي نقوم بعرض الشغل على المستخدم نقوم بأنشاء‬
view ‫ وبين‬modle

cmd ‫من خالل كتابة االمر التالي في‬


php artisan make:controller postsController --resource

platformiq /Http/controllers ‫ في ملف‬postsController ‫تم انشاء ملف‬

‫ندخل الى الملف السابق‬


platformiq /app/Http/controllers/postsController.php
:public function create ‫ونقوم بأضافة الكود التالي في‬
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class postsController extends Controller


{

public function index()


{

public function create()


{
return view('posts.create');

posts ‫ نقوم بأنشاء ملف نسمية مثال‬platformiq /resources/views ‫في ملف‬


create.blade.php ‫ونعمل داخله ملف اسمه‬
~ 21 ~
@extends('layouts.app') ‫ لكي نستطيع ان نستخدم‬blade.php ‫ نقوم بكتابة‬:‫مالحظة‬

‫التي سوف نشرحها فيما بعد‬

Create.blade.php ‫ثم نكتب الكود التالي داخل ملف‬

@extends('layouts.app')

@section('content')
<div class="container">
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card">
<div class="card-header">Create Post</div>

<div class="card-body">

Create your Post :)


</div>
</div>
</div>
</div>
</div>
@endsection

Laravel- Web

‫ ونكتب فيه هذا الكود لكي نعرض‬platformiq /routes/web.php ‫ندخل الى ملف‬
:‫الشغل على السيرفر‬
<?php

Route::get('/', function () {
return view('welcome');
});

Auth::routes();

Route::get('/home', 'HomeController@index')->name('home');

Route::get('/post/create', 'PostsController@create')
->name('post.create');

‫ ونكتب الرابط‬google chrome ‫بعد كتابة االكواد أعاله نذهب الى متصفح االنترنت مثل‬
http://localhost:8000/post/create : ‫االتي‬

~ 22 ~
‫فتظهر لنا هذه الصفحة ‪:‬‬

‫أي ان التسجيل تم بنجاح‬

‫~ ‪~ 23‬‬
Laravel-Navbar-Posts

:‫ فنذهب الى ملف‬posts ‫ قائمة منسدلة وهي‬navbar ‫االن نعمل في‬


platformiq /resources/views/layouts/app.blade.php ‫ندخل الى ملف‬
:‫التالي‬ ‫نكتب فيه الكود‬
<body>
<div id="app">
<nav class="navbar navbar-expand-md navbar-light bg-white shadow-
sm">
<div class="container">
<a class="navbar-brand" href="{{ url('/') }}">
Rahma altaee
</a>
<ul class="navbar-nav mr-auto">

<li class="nav-item dropdown">


<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown"
role="button" data-toggle="dropdown" aria-haspopup="true" aria-
expanded="false">
Posts
</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
<a class="dropdown-item"
href="{{route('post.create')}}">Create</a>
<a class="dropdown-item" href="#">Another action</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="#">Something else here</a>
</div>
</li>
</ul>
</body>

‫ ونكتب الرابط‬google chrome ‫بعد كتابة االكواد أعاله نذهب الى متصفح االنترنت مثل‬
http://localhost:8000/home :‫االتي‬

:‫ كما موضح بلقطة الشاشة‬navbar ‫يظهر لنا‬

~ 24 ~
‫لكي نستطيع فتح الصفحة على متصفح السيرفر نضيف هذا الكود في ملف‬
platformiq /routes/web.php
<?php

Route::get('/', function () {
return view('welcome');
});

Auth::routes();

Route::get('/home', 'HomeController@index')->name('home');

Route::group([ 'middleware'=>'auth'], function () {


//route for posts

Route::get('/post/create', 'PostsController@create')->name
('post.create');

});
‫ من خالل الذهاب الى موقع‬ckeditor ‫نقوم بتنزيل‬
https://github.com/UniSharp/laravel-ckeditor
laravel ‫ في‬ckeditor ‫ االمر التالي لتنزيل‬cmd‫تم نكتب في‬
composer require unisharp/laravel-ckeditor
php artisan vendor:publish --tag=ckeditor ‫ثم االمر‬
ckeditor ‫ نالحظ وجود ملف‬platformiq/public/vendor ‫نذهب الى ملف‬
‫ نكتب الكود‬platformiq /resources/views/posts/create.blade.php
:‫التالي‬
@extends('layouts.app')

@section('content')

<div class="container">
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card">
<div class="card-header">Create Post</div>
<div class="card-body">
<form action="{{route('post.store')}}" method="POST">
{{csrf_field()}}
<div class="form-group">
<label for="title">Title</label>
<input type="text" class="form-control" name="title"
placeholder="Enter title">
</div>
<div class="form-group">

~ 25 ~
<label for="content">Description</label>
<textarea class="form-control" name="content" id="content" rows="8"
cols="8"></textarea>
</div>
<div class="form-group">
<label for="featured">Photo</label>
<input type="file" class="form-control-file" name="featured">
</div>
<button type="submit" class="btn btn-primary">Save</button>
</form>
</div>
</div>
</div>
</div>
</div>
@endsection
@section('scripts')
<scriptsrc="http://cdnjs.cloudflare.com/ajax/libs/summernote/0.8.2/su
mmernote.js" defer></script>

<scriptsrc="http://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery
.js"></script>
<script>
$(document).ready(function() {
$('#content').summernote();
});
</script>

@endsection

ckeditor ‫داخل المستطيل أعاله كود‬


:‫ كما موضح بلقطة الشاشة‬posts ‫ من قائمة‬create ‫بعد كتابة االكواد أعاله فنضغط على‬

~ 26 ~
:‫فتظهر لنا هذه الصفحة كما موضح بلقطة الشاشة‬

‫ سوف ترسل هذه البيانات الى‬save ‫ السابقة عند الضغط على‬posts ‫التحقق من ملئ حقول‬
:‫قاعدة البيانات فنذهب الى ملف‬
platformiq /resources/views/posts/create.blade.php

@extends('layouts.app')

@section('content')

<div class="container">
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card">
<div class="card-header">Create Post</div>

<div class="card-body">
@if(count($errors)>0)
<ul class="navbar-nav mr-auto">
@foreach($errors->all() as $error )
<li class="nav-item active">
{{$error}}
</li>
@endforeach

~ 27 ~
</ul>
@endif

</div>
</div>
</div>
</div>
</div>
@endsection
@section('scripts')

<script
src="http://cdnjs.cloudflare.com/ajax/libs/summernote/0.8.2/summernot
e.js" defer></script>

<script
src="http://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.js"></
script>
<script>
$(document).ready(function() {
$('#content').summernote();
});
</script>

@endsection

:‫ تظهر كما واضح بلقطة الشاشة‬save ‫اذا لم نقوم بملئ الحقول بالبيانات ثم نضغط على‬

‫ ونكتب الكود التالي لكي تنتقل البيانات‬platformiq /routes/web.php ‫ثم ندخل الى ملف‬
save ‫ عند الضغط على‬/post/store ‫الى صفحة‬
<?php

Route::get('/', function () {
return view('welcome');
});

Auth::routes();

Route::get('/home', 'HomeController@index')->name('home');

~ 28 ~
Route::group(['prefix' => 'user', 'middleware'=>'auth'], function ()
{
//Route::group([ 'middleware'=>'auth'], function () {

//route for posts


Route::get('/post/create', 'PostsController@create')-
>name('post.create');
Route::post('/post/store', 'PostsController@store')-
>name('post.store');});

: ‫ نكتب الكود التالي في ملف‬posts ‫ في قائمة‬error ‫ولحساب عدد‬


platformiq /app/Http/controllers/postsController.php
public function stroe ‫ونكتب الكود التالي في‬
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class postsController extends Controller


{

public function index()


{

}
public function create()
{
return view('posts.create');

public function store(Request $request)


{
$this->validate($request,[
"title" => "required",
"content" => "required",
"featured" => "required|image",
]);
dd($request->all());

‫ فتظهر كاالتي وذلك بسبب‬save ‫بعد ذلك نقوم بملئ الحقول بالبيانات ثم نضغط على‬
dd($request->all()); ‫استخدمنا هذا الكود‬

~ 29 ~
Laravel-Navbar-Categories

:‫ فنذهب الى ملف‬categories ‫ قائمة منسدلة ثانية وهي‬navbar ‫نعمل في‬


platformiq /resources/views/posts/category.blade.php
:‫نكتب الكود التالي‬
@extends('layouts.app')

@section('content')

<div class="container">
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card">
<div class="card-header">Ctegory Post</div>

<div class="card-body">
<form action="{{route('category.store')}}" method="POST">
{{csrf_field()}}
<div class="form-group">
<label for="name">Name</label>
<input type="text" class="form-control" name="name"
placeholder="Enter title">
</div>
<button type="submit" class="btn btn-primary">Save</button>
</form>
</div>
</div>
</div>
</div>
</div>
@endsection

: ‫ كما موضح‬categories ‫ من قائمة‬create ‫بعد كتابة االكواد أعاله فنضغط على‬

~ 30 ~
:‫فتظهر لنا هذه الصفحة كما موضح بلقطة الشاشة‬

Laravel-Controller
‫ ونسمية‬posts ‫ كما عملنا سابقا مع‬controller ‫ثم نقوم بأنشاء‬
cmd ‫ فنقوم بكتابة االمر التالي في‬categoriesController
php artisan make:controller categoriesController --resource

:‫بعدها نفتح هذا الملف فنذهب الى ملف‬


platformiq /app/Http/controllers/categoriesController.php
: public function create ‫ونكتب الكود التالي في‬
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
class categoriesController extends Controller
{

public function index()


{
//
}
public function create()
{
return view('categories.create');

~ 31 ~
‫ سوف ترسل هذه البيانات‬save ‫ السابقة عند الضغط على‬category ‫التحقق من ملئ حقول‬
:‫الى قاعدة البيانات فنذهب الى ملف‬
platformiq /resources/views/posts/category.blade.php
@extends('layouts.app')

@section('content')

<div class="container">
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card">
<div class="card-header">Ctegory Post</div>

<div class="card-body">
@if(count($errors)>0)
<ul class="navbar-nav mr-auto">
@foreach($errors->all() as $error )
<li class="nav-item active">
{{$error}}
</li>
@endforeach

</ul>
@endif
</div>
</div>
</div>
</div>
</div>
@endsection

:‫ تظهر كما واضح بلقطة الشاشة‬save ‫اذا لم نقوم بملئ الحقول بالبيانات ثم نضغط على‬

~ 32 ~
Laravel-Web

‫ ونكتب الكود التالي لكي تنتقل‬platformiq /routes/web.php ‫ثم ندخل الى ملف‬
save ‫ عند الضغط على‬/category/store ‫البيانات الى صفحة‬
<?php

Route::get('/', function () {
return view('welcome');
});

Auth::routes();

Route::get('/home', 'HomeController@index')->name('home');

Route::group(['prefix' => 'user', 'middleware'=>'auth'], function ()


{
//Route::group([ 'middleware'=>'auth'], function () {

//route for posts


Route::get('/post/create', 'PostsController@create')-
>name('post.create');
Route::post('/post/store', 'PostsController@store')-
>name('post.store');

//route for Categories


Route::get('/category/create', 'CategoriesController@create')-
>name('category.create');
Route::post('/category/store', 'CategoriesController@store')-
>name('category.store');

});

: ‫ نكتب الكود التالي في ملف‬category ‫ في قائمة‬error ‫ولحساب عدد‬


platformiq /app/Http/controllers/categoriesController.php

public function stroe ‫ونكتب الكود التالي في‬


<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class categoriesController extends Controller

public function index()

~ 33 ~
{

public function create()


{
return view('categories.create');

public function store(Request $request)


{
$this->validate($request,[
'name' => 'required'
]);
dd($request->all());
}

‫ فتظهر كاالتي وذلك بسبب‬save ‫بعد ذلك نقوم بملئ الحقول بالبيانات ثم نضغط على‬
dd($request->all());‫استخدمنا هذا الكود‬

php artisan categories –m:‫ثم نكتب االمر‬


:‫ونكتب فيه الكود التالي‬
<?php

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

class CreateCategoriesTable extends Migration


{

public function up()


{
Schema::create('categories', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->timestamps();
});

public function down()


{
Schema::dropIfExists('categories');
}}}

~ 34 ~
Laravel-Migrations

‫ في قاعدة البيانات لكي تقوم هذه‬categories‫ و‬posts ‫ لجدول‬migration ‫ثم نعمل‬


:‫الجداول بأستقبال البيانات المرسلة‬
php artisan migration :cmd ‫فنكتب االمر التالي في‬

post , category ‫فنذهب الى قاعدة البيانات نالحظ انه قام بعمل جدولين هما‬

categories ‫ ونعمل‬platformiq/routes/web.php ‫ثم نذهب الى ملف‬


:‫ونقوم بأضافة الكود التالي‬
<?php

//route for Categories


Route::get('/categories', 'CategoriesController@index')-
>name('categories');
Route::get('/category/create', 'CategoriesController@create')-
>name('category.create');
Route::post('/category/store', 'CategoriesController@store')-
>name('category.store');

});

~ 35 ~
Laravel-Database
‫ في ملف‬DATABASE ‫خزن البيانات في‬
platformiq/app/http/controllers/categoriescontroller
public function create ‫ونكتب الكود التالي في‬
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Category;
class categoriesController extends Controller
{

public function index()


{
return view('categories.index')->with('categories',Category::all());
}

public function create()


{

}
database ‫ثم نقوم االن بإدخال البيانات لكي نرسلها الى‬

‫نذهب الى قاعدة البيانات ونالحظ تم ارسال وخزن البيانات في قاعدة البيانات كما موضح بلقطة‬
:‫الشاشة‬

~ 36 ~
Laravel-Data retrieval
:‫ عملنا‬category ‫استرجاع البيانات من قاعدة البيانات وعرضها في جدول لكي نرى كم‬
index ‫ نقوم بعمل صفحة‬: ‫أوال‬
platformiq/resources/views/categories/index.blade.php ‫في ملف‬
:‫ونكتب الكود التالي‬
@extends('layouts.app')

@section('content')
<div class="container">
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card">
<div class="card-header">Categories</div>
<div class="card-body">
<table class="table table-striped">
<thead>
<tr>
<th scope="col"> No </th>
<th scope="col">Edit</th>
<th scope="col">Delete</th>
</tr>
</thead>
<tbody>
@foreach ($categories as $category)
<tr>
<th scope="row">{{$category->name}}</th>
<td>
<a class="" href="{{route('category.edit',['id' =>$category->id
])}}">
<img alt="Edit icon" src="https://img.icons8.com/bubbles/2x/edit.png"
style="height: 64px; width: 64px;">
</a>
</td>
<td>
<a class="" href="{{route('category.delete',['id' =>$category->id
])}}">
<img alt="Delete icon" src="https://img.icons8.com/bubbles/2x/delete-
sign.png" style="height: 64px; width: 64px;">
</a>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
@endsection

~ 37 ~
‫ نذهب الى ملف‬:‫ثانيا‬
platformiq /app/Http/controllers/categoriesController.php
: public function index ‫ونكتب الكود التالي في‬
namespace App\Http\Controllers;

use Illuminate\Http\Request;
//use App\Category;
use App\Category;
class categoriesController extends Controller
{

public function index()


{
return view('categories.index')-
>with('categories',Category::all());
}
: ‫ نذهب الى ملف‬:‫ثالثا‬
platformiq/resources/views/layouts/app.blade.php
:‫ونضيف الكود التالي‬
<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="csrf-token" content="{{ csrf_token() }}">

<title>{{ config('app.name', 'Laravel') }}</title>


<script src="{{ asset('js/app.js') }}" defer></script>
<link rel="dns-prefetch" href="//fonts.gstatic.com">
<link href="https://fonts.googleapis.com/css?family=Nunito"
rel="stylesheet">
<link href="{{ asset('css/app.css') }}" rel="stylesheet">
</head>
<body>
<div id="app">
<nav class="navbar navbar-expand-md navbar-light bg-white shadow-sm">
<div class="container">
<a class="navbar-brand" href="{{ url('/') }}">
Rahma altaee
</a>
<ul class="navbar-nav mr-auto">
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown"
role="button" data-toggle="dropdown" aria-haspopup="true" aria-
expanded="false">
Category
</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
<a class="dropdown-item"
href="{{route('category.create')}}">Create</a>
<a class="dropdown-item"
href="{{route('categories')}}">Categories</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="#">Something else here</a>

~ 38 ~
</div>
</li></ul>

categories ‫ ونضغط على‬category ‫فنذهب الى قائمة‬

:‫فيظهر لنا الجدول كما موضح ادناة السترجاع البيانات‬

☺ ‫فنالحظ تم استرجاع وعرض البيانات بنجاح‬


‫ بنفس الشكل مع ملف‬edit , delete ‫ نقوم بعمل‬:‫رابعا‬
platformiq/routes/ web.php
<?php
Route::get('/', function () {
return view('welcome');
});

Auth::routes();

//route for Categories


Route::get('/categories', 'CategoriesController@index')-
>name('categories');
Route::get('/category/edit/{id}', 'CategoriesController@edit')-
>name('category.edit');

~ 39 ~
Route::get('/category/delete/{id}',
'CategoriesController@destroy')->name('category.delete');
Route::get('/category/create', 'CategoriesController@create')-
>name('category.create');
Route::post('/category/store', 'CategoriesController@store')-
>name('category.store');
Route::post('/category/update/{id}',
'CategoriesController@update')->name('category.update');

});

Laravel-Controller
platformiq/app/http/controllers/categorycontroller‫وبعدها ملف‬
public function edit , update,destroy ‫في‬
<?php

namespace App\Http\Controllers;

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

class CategoriesController extends Controller


{
public function index()
{
return view('categories.index')->with('categories',Category::all());
}

public function create()


{
return view('categories.create');
}

public function store(Request $request)


{
$this->validate($request,[
'name' => 'required'
]);

$category = new Category;

$category->name = $request->name;
$category->save();

return redirect()->back();

public function show($id)


{

~ 40 ~
}

public function edit($id)


{
$category = Category::find($id);
return view('categories.edit')->with('category',$category);
}

public function update(Request $request, $id)


{
$category = Category::find($id);
$category->name = $request->name;
$category->save();
return redirect()->route('categories');

}
public function destroy($id)
{
$category = Category::find($id);
foreach ($category->posts as $post ) {
$post->forceDelete();
}
$category->delete();
return redirect()->route('categories');
}
}
:‫ في ملف‬delete ‫واالن نقوم نعمل صفحة‬
Platformiq/resources/views/categories/edit.blade.php
:‫فندخل الى الصفحة أعاله ونكتب الكود التالي‬
@extends('layouts.app')

@section('content')

<div class="container">
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card">
<div class="card-header">Edit Category {{$category->name}}</div>
<div class="card-body">
<form action="{{route('category.update' , ['id' => $category->id
])}}" method="POST" >
{{ csrf_field()}}
<div class="form-group">
<label for="name">Name</label>
<input type="text" class="form-control" name="name"
value="{{$category->name}}">
</div>
<button type="submit" class="btn btn-primary">Update</button>
</form>
</div>
</div>
</div>
</div>
</div>
@endsection

~ 41 ~
:‫ تظهر لنا هذه الصفحة‬edit ‫فعند الضغط على‬

:‫نالحظ تم حذفة كما موضح بلقطة الشاشة‬TagHeuer ‫ على مثال‬delete ‫وعند الضغط على‬

Laravel-Data retrieval
‫ مع البيانات نذهب الى ملف‬category ‫لجلب‬
platforiq/app/http/controllers/postscontroller.php
public function store ‫ونكتب الكود في‬
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Category;
class postsController extends Controller
{

public function index()


{
return view('posts.index')->with('posts',Post::all());
}

public function create()


{
return view('posts.create')->with('categories',category::all());

~ 42 ~
public function store(Request $request)
{
$this->validate($request,[
"title" => "required",
"content" => "required",
"category_id" => "required",
"featured" => "required|image",

]);
}

:‫ كما موضح ادناه‬create post ‫ في صفحة‬category ‫فيعرض‬

Laravel-photo
‫ الخفاء البيانات عند حذفها‬soft delete at ‫ عمل‬+‫رفع الصور وخزنها في قاعدة البيانات‬
:‫من قبل المستخدم فندخل الى ملف‬
platformiq/app/http/controllers/postcontroller.php
public function store ‫ونكتب الكود في‬
<?php

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

class postsController extends Controller


{

public function store(Request $request)


{
$this->validate($request,[
"title" => "required",
"content" => "required",
"category_id" => "required",
"featured" => "required|image"
]);

$featured = $request->featured;

~ 43 ~
$featured_new_name = time().$featured-
>getClientOriginalName();
$featured->move('uploads/posts',$featured_new_name);
$post = Post::create([
"title" => $request->title,
"content" => $request->content,
"category_id" => $request->category_id,
"featrued" => 'uploads/posts/'.$featured_new_name

]);
return redirect()->back();
}

:‫ ونكتب الكود التالي‬platformiq/app/post.php ‫وملف‬


<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

class Post extends Model


{
use SoftDeletes;

protected $fillable = [
'title', 'content', 'category_id', 'featrued','slug'
];

protected $dates = ['deleted_at'];

public function category()


{
return $this->belongsTo('App\Category');
}

~ 44 ~
‫ثم نذهب الى قاعدة البيانات نالحظ تم انشاء حقل للصور وتم خزنها هناك‬

platformiq/pcblic/update/posts :‫ في ملف‬update/posts ‫ونعمل ملف‬


folder‫نالحظ تم خزن الصورة في هذا ال‬

Laravel-Slug
‫ في قاعدة البيانات‬title‫ لخزن‬slug ‫عمل‬
platformiq/app/controllers/postscontroller :‫نذهب الى ملف‬
:‫ونكتب الكود التالي‬
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Category;
use App\Post;
public function store(Request $request)

~ 45 ~
{
$this->validate($request,[
"title" => "required",
"content" => "required",
"category_id" => "required",
"featured" => "required|image",

]);

$featured = $request->featured;
$featured_new_name = time().$featured->getClientOriginalName();
$featured->move('uploads/posts',$featured_new_name);
$post = Post::create([
"title" => $request->title,
"content" => $request->content,
"category_id" => $request->category_id,
"featrued" => 'uploads/posts/'.$featured_new_name,
"slug" => str_slug($request->title)// my new post => my-new-

]);
return redirect()->back();

:‫ ونكتب هذا الكود‬platformiq/app/post.php ‫ثم ملف‬


<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

class Post extends Model


{
use SoftDeletes;

protected $fillable = [
'title', 'content', 'category_id', 'featrued','slug'
];

protected $dates = ['deleted_at'];

‫ داخل قاعدة البيانات فندخل الى ملف‬slug ‫وبعد ذلك نقوم بعمل حقل‬
Platformiq/database/migrations/ 2020_09_07_232951_create_posts_table

:‫ونكتب الكود التالي‬


<?php

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

~ 46 ~
class CreatePostsTable extends Migration
{
public function up()
{
Schema::create('posts', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('title');
$table->string('content');
$table->string('category_id');
$table->string('featrued');
$table->string('slug');
$table->softDeletes();

title ‫ وفيه نفس بيانات‬slug ‫ونذهب الى قاعدة البيانات نالحظ تم انشاء حقل‬

categories ‫ كما في‬posts ‫نعمل في القائمة المنسدلة‬


posts ‫ في قائمة‬posts ‫ الضافة‬app.blade.php ‫ملف‬

<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">

<!-- CSRF Token -->


<meta name="csrf-token" content="{{ csrf_token() }}">

<title>{{ config('app.name', 'Laravel') }}</title>

<!-- Scripts -->


<script src="{{ asset('js/app.js') }}" defer></script>

<!-- Fonts -->


<link rel="dns-prefetch" href="//fonts.gstatic.com">
<link href="https://fonts.googleapis.com/css?family=Nunito"
rel="stylesheet">

<!-- Styles -->


<link href="{{ asset('css/app.css') }}" rel="stylesheet">
</head>
<body>
<div id="app">
<nav class="navbar navbar-expand-md navbar-light bg-white shadow-sm">
<div class="container">
<a class="navbar-brand" href="{{ url('/') }}">
Rahma altaee
</a>

~ 47 ~
<ul class="navbar-nav mr-auto">
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown"
role="button" data-toggle="dropdown" aria-haspopup="true" aria-
expanded="false">
Categories
</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
<a class="dropdown-item"
href="{{route('category.create')}}">Create</a>
<a class="dropdown-item"
href="{{route('categories')}}">Categories</a>

<div class="dropdown-divider"></div>
<a class="dropdown-item" href="#">Something else here</a>
</div>
</li>

</ul>

<ul class="navbar-nav mr-auto">


<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown"
role="button" data-toggle="dropdown" aria-haspopup="true" aria-
expanded="false">
Posts
</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
<a class="dropdown-item" href="{{route('post.create')}}">Create</a>
<a class="dropdown-item" href="{{route('posts')}}">Posts</a>

<div class="dropdown-divider"></div>
<a class="dropdown-item" href="#">Something else here</a>
</div>
</li>

</ul>
<button class="navbar-toggler" type="button" data-toggle="collapse"
data-target="#navbarSupportedContent" aria-
controls="navbarSupportedContent" aria-expanded="false" aria-
label="{{ __('Toggle navigation') }}">
<span class="navbar-toggler-icon"></span>
</button>

‫ الى جدول في الصفحة الرئيسية‬posts ‫السترجاع جدول‬


web.php ‫ملف‬

~ 48 ~
<?php

Route::get('/', function () {
return view('welcome');
});

Auth::routes();

Route::get('/home', 'HomeController@index')->name('home');

Route::group(['prefix' => 'user', 'middleware'=>'auth'], function ()


{
//Route::group([ 'middleware'=>'auth'], function () {

//route for posts


Route::get('/posts', 'PostsController@index')->name('posts');

Route::get('/post/create', 'PostsController@create')-
>name('post.create');
Route::post('/post/store', 'PostsController@store')-
>name('post.store');
Route::get('/post/delete/{id}', 'postsController@destroy')-
>name('post.delete');
‫وأيضا نقوم بحذفها من جدول الصفحة الرئيسية‬
postscontrollers ‫ملف‬
public function index,destroy ‫في‬
<?php

namespace App\Http\Controllers;

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

class postsController extends Controller


{

public function index()


{
return view('posts.index')->with('posts',Post::all());
}

public function destroy($id)


{
$post = Post::find($id);
$post->delete($id);
return redirect()->back();
}
}

post ‫ في ملف‬index.php ‫نعمل صفحة‬


@extends('layouts.app')

~ 49 ~
@section('content')
<div class="container">
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card">
<div class="card-header">Posts</div>

<div class="card-body">
@if ($posts->count()>0)
<table class="table table-striped">
<thead>
<tr>
<th scope="col"> No </th>
<th scope="col"> Title </th>
<th scope="col">Delete</th>

</tr>
</thead>
<tbody>
@foreach ($posts as $post)
<tr>
<th scope="row">
<img src="{{$post->featrued}}" alt="{{$post->title}}" class="img-
thumbnail" width="100px" height="100px">

</th>
<th scope="row">{{$post->title}}</th>

<td>
<img alt="Edit icon" src="https://img.icons8.com/offices/2x/edit.png"
style="height: 30px; width: 30px;">
</td>
<td>
<a class="" href="{{route('post.delete',['id' =>$post->id ])}}">

<img alt="Delete icon" src="https://img.icons8.com/offices/2x/delete-


sign.png" style="height: 30px; width: 30px;">
</a>
</td>
</tr>
@endforeach

@else
<p scope="row" class="text-center">No posts</p>
@endif
</tbody>
</table>
</div>
</div>
</div>
</div>

~ 50 ~
Laravel-Posts-Softdelete

‫ وهو يقوم باسترجاع البيانات المحذوفة في جدول لكي يقوم‬posts‫ لل‬softdeleted ‫نعمل‬
:‫المستخدم اما بحذفها نهائيا او استرجاعها وخزنها في البيانات مرة أخرى‬

app.blade.php ‫ فنذهب الى صفحة‬posts ‫ في قائمة‬posts softdeleted ‫فنعمل‬


:‫ونكتب الكود التالي‬
<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
Posts
</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
<a class="dropdown-item" href="{{route('post.create')}}">Create</a>
<a class="dropdown-item" href="{{route('posts')}}">Posts</a>

<div class="dropdown-divider"></div>
<a class="dropdown-item" href="{{route('post.trashed')}}">Posts
Softdeleted</a>
</div>
</li>

</ul>

~ 51 ~
<button class="navbar-toggler" type="button" data-toggle="collapse"
data-target="#navbarSupportedContent" aria-
controls="navbarSupportedContent" aria-expanded="false" aria-
label="{{ __('Toggle navigation') }}">
<span class="navbar-toggler-icon"></span>
</button>
</body>
</html>

:‫ مثال‬Switzerland ‫كما في الصورة قمنا بحذف‬

‫ فنذهب الى ملف‬softdeleted.blade.php ‫نعمل صفحة‬


platformiq/resources/views/posts/softdeleted.blade.php
:‫ونكتب الكود التالي‬
@extends('layouts.app')

@section('content')
<div class="container">
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card">
<div class="card-header">Posts soft deleted</div>

<div class="card-body">
@if ($posts->count()>0)
<table class="table table-striped">
<thead>
<tr>
<th scope="col"> No </th>
<th scope="col"> Title </th>

<th scope="col">Restore</th>
<th scope="col">Delete</th>

</tr>
</thead>
<tbody>

@foreach ($posts as $post)

~ 52 ~
<tr>
<th scope="row">
<img src="{{$post->featrued}}" alt="{{$post->title}}" class="img-
thumbnail" width="100px" height="100px">

</th>
<th scope="row">{{$post->title}}</th>

<td>
<a class="" href="{{route('post.restore',['id' =>$post->id ])}}">

<img alt="Edit icon" src="https://img.icons8.com/ios-


glyphs/2x/edit.png" style="height: 30px; width: 30px;">
</a>
</td>
<td>
<a class="" href="{{route('post.hdelete',['id' =>$post->id ])}}">
<img alt="Delete Bin icon" src="https://img.icons8.com/fluent-
systems-regular/2x/delete-forever.png" lazy="loaded" style="height:
24px; width: 24px;">
</a>
</td>
</tr>
@endforeach

@else
<p scope="row" class="text-center">No trashed posts</p>
@endif
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
@endsection
:‫ ونكتب الكود التالي‬web.php ‫ثم ملف‬
<?php

Route::get('/', function () {
return view('welcome');
});

Auth::routes();

Route::get('/home', 'HomeController@index')->name('home');

Route::group(['prefix' => 'user', 'middleware'=>'auth'], function ()


{
//Route::group([ 'middleware'=>'auth'], function () {

//route for posts


Route::get('/posts', 'PostsController@index')->name('posts');
Route::get('/post/trashed', 'PostsController@trashed')-
>name('post.trashed');
Route::get('/post/hdelete/{id}', 'PostsController@hdelete')-
>name('post.hdelete');

~ 53 ~
Route::get('/post/restore/{id}', 'PostsController@restore')-
>name('post.restore');

Route::get('/post/create', 'PostsController@create')-
>name('post.create');
Route::post('/post/store', 'PostsController@store')-
>name('post.store');
Route::get('/post/delete/{id}', 'postsController@destroy')-
>name('post.delete');

platformiq/app/http/controllers/postscontroller ‫ثم ملف‬


:‫ونكتب الكود التالي‬
<?php

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

class postsController extends Controller


{

public function index()


{
return view('posts.index')->with('posts',Post::all());
}

public function create()


{
return view('posts.create')->with('categories',category::all());

}
public function store(Request $request)
{
$this->validate($request,[
"title" => "required",
"content" => "required",
"category_id" => "required",
"featured" => "required|image",

]);

$featured = $request->featured;
$featured_new_name = time().$featured-
>getClientOriginalName();
$featured->move('uploads/posts',$featured_new_name);

$post = Post::create([
"title" => $request->title,
"content" => $request->content,
"category_id" => $request->category_id,
"featrued" => 'uploads/posts/'.$featured_new_name,
"slug" => str_slug($request->title)// my new post => my-new-
post

]);
return redirect()->back();

~ 54 ~
}

public function show($id)


{

public function edit($id)


{
//
}

public function update(Request $request, $id)


{

public function destroy($id)


{
$post = Post::find($id);
$post->delete($id);
return redirect()->back();
}
public function trashed()
{
$post = Post::onlyTrashed()->get();
//dd($post);
return view('posts.softdeleted')->with('posts',$post);
}
public function hdelete($id)
{
$post = Post::withTrashed()->where('id',$id)->first();
$post->forceDelete();
return redirect()->back();
}
public function restore($id)
{
$post = Post::withTrashed()->where('id',$id)->first();
$post->restore();
return redirect()->route('posts');
}

~ 55 ~
: ‫فتظهر كما في الصورة‬

‫ تحذف نهائيا‬delete ‫وعند الضغط على‬

‫ لكي يقوم المستخدم بالتعديل عليها او‬posts ‫ ترجع الى صفحة‬edit ‫ولكن عند الضغط على‬
:‫ مرة أخرى‬posts softdeleted‫بحذفها وتذهب الى صفحة‬
:‫كما في الصورة السابقة‬

Laravel-update
posts ‫التعديل على الصورة من قبل المستخدم في صفحة‬
index .blade.php ‫ملف‬
@extends('layouts.app')

@section('content')
<div class="container">
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card">
<div class="card-header">Posts</div>
<div class="card-body">
@if ($posts->count()>0)
<table class="table table-striped">
<thead>
<tr>
<th scope="col"> No </th>
<th scope="col"> Title </th>

<th scope="col">Edit</th>

~ 56 ~
<th scope="col">Delete</th>

</tr>
</thead>
<tbody>
@foreach ($posts as $post)
<tr>
<th scope="row">
<img src="{{$post->featrued}}" alt="{{$post->title}}" class="img-
thumbnail" width="100px" height="100px">

</th>
<th scope="row">{{$post->title}}</th>

<td>
<a class="" href="{{route('post.edit',['id' =>$post->id ])}}">
<img alt="Edit icon" src="https://img.icons8.com/offices/2x/edit.png"
style="height: 30px; width: 30px;">
</a>
</td>
<td>
<a class="" href="{{route('post.delete',['id' =>$post->id ])}}">

<img alt="Delete icon" src="https://img.icons8.com/offices/2x/delete-


sign.png" style="height: 30px; width: 30px;">
</a>
</td>
</tr>
@endforeach

@else
<p scope="row" class="text-center">No posts</p>
@endif
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
@endsection

posts ‫ في ملف‬edit.php‫نعمل ملف‬


@extends('layouts.app')

@section('content')

<div class="container">
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card">
<div class="card-header">Edit Post {{$posts->title}}</div>

<div class="card-body">

@if(count($errors)>0)

~ 57 ~
<ul class="navbar-nav mr-auto">
@foreach ($errors->all() as $error)
<li class="nav-item active">
{{$error}}
</li>
@endforeach

</ul>
@endif

<form action="{{route('post.update',['id' => $posts->id ])}}"


method="POST" enctype="multipart/form-data">
{{ csrf_field()}}
<div class="form-group">
<label for="category_id">Category</label>
<select class="form-control" name="category_id" id="category">

@foreach ($categories as $category)


@if ($category->id == $posts->category_id)
<option value="{{$category->id}}" selected>{{$category-
>name}}</option>

@else
<option value="{{$category->id}}" >{{$category->name}}</option>
@endif

@endforeach

</select>
</div>
<div class="form-group">
<label for="title">Title</label>
<input type="text" class="form-control" name="title"
value="{{$posts->title}}">
</div>
<div class="form-group">
<label for="content">Description</label>
<textarea class="form-control" name="content" id="content" rows="8"
cols="8">
{{ $posts->content }}
</textarea>
</div>
<div class="form-group">
<label for="featured">Photo</label>
<input type="file" class="form-control-file" name="featured">
</div>
<button type="submit" class="btn btn-primary">Update</button>
</form>

</div>
</div>
</div>
</div>
</div>
@endsection

~ 58 ~
platformiq/app/http/controllers/postscontroller ‫ملف‬

public function edit,update ‫ونكتب في‬


<?php

namespace App\Http\Controllers;

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

class postsController extends Controller


{
}

public function show($id)


{

public function edit($id)


{
$post = Post::find($id);
return view('posts.edit')->with('posts',$post)
->with('categories',Category::all())-
>with('categories',category::all());;
}

public function update(Request $request, $id)


{

$post = Post::find($id);

$this->validate($request,[
"title" => "required",
"content" => "required",
"category_id" => "required"

]);

if ( $request->hasFile('featured') ) {
$featured = $request->featured;
$featured_new_name = time().$featured-
>getClientOriginalName();
$featured->move('uploads/posts/',$featured_new_name);
$post->featrued = 'uploads/posts/'.$featured_new_name;

}
//dd($post);
$post->title = $request->title;
$post->content = $request->content;
$post->category_id = $request->category_id;
$post->save();
return redirect()->route('posts');

~ 59 ~
}
‫ نكتب‬web.php‫في ملف‬
<?php

Route::get('/', function () {
return view('welcome');
});

Auth::routes();

Route::get('/home', 'HomeController@index')->name('home');

Route::group(['prefix' => 'user', 'middleware'=>'auth'], function ()


{
//Route::group([ 'middleware'=>'auth'], function () {

//route for posts


Route::get('/posts', 'PostsController@index')->name('posts');
Route::get('/post/trashed', 'PostsController@trashed')-
>name('post.trashed');
Route::get('/post/hdelete/{id}', 'PostsController@hdelete')-
>name('post.hdelete');
Route::get('/post/restore/{id}', 'PostsController@restore')-
>name('post.restore');
Route::get('/post/edit/{id}', 'PostsController@edit')-
>name('post.edit');
Route::post('/post/update/{id}', 'PostsController@update')-
>name('post.update');

Route::get('/post/create', 'PostsController@create')-
>name('post.create');
Route::post('/post/store', 'PostsController@store')-
>name('post.store');
Route::get('/post/delete/{id}', 'postsController@destroy')-
>name('post.delete');

});

~ 60 ~
‫عند الضغط على عنصر في صفحة ‪ posts‬مثال نضغط على ‪Germany‬‬

‫فسوف تحولنا الى صفحة ‪edit‬‬

‫~ ‪~ 61‬‬
‫فنقوم بتغير أي بيانات ال نرغب بها ونقوم بخزنها مرة أخرى في ‪ posts‬كما في الصورة قمنا‬
‫بتغير ‪ category ,title‬أيضا ‪:‬‬

‫بعدها نضغط على ‪ update‬فتظهر كما في الصورة‪:‬‬

‫~ ‪~ 62‬‬
Laravel- Many To Many Relation Database

post,tag ‫ بين‬many to many relation database ‫نعمل‬


php artisan make:model Tag -m :‫نكتب االمر التالي‬

migrations ‫ في ملف‬tags ‫قام بانشاء ملف‬

:‫ونكتب فيه الكود التالي‬


<?php

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

class CreateTagsTable extends Migration


{

public function up()


{
Schema::create('tags', function (Blueprint $table) {
$table->increments('id');
$table->string('tag');
$table->timestamps();
});
}

public function down()


{
Schema::dropIfExists('tags');
}
}
:‫نالحظ تم إضافة الجدول في قاعدة البيانات‬

~ 63 ~
:‫كما موضح بالصورة‬

post_tag ‫ونعمل أيضا ملف‬


php artisan make:migration post_tag_table_creation :‫فنكتب االمر التالي‬
:‫كما في الصورة‬

migration ‫واضافه أيضا في ملف‬

:‫فنذهب اليه ونكتب الكود التالي‬


<?php

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

class PostTagTableCreation extends Migration


{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('post_tag', function (Blueprint $table) {
$table->increments('id');
$table->integer('post_id');
$table->integer('tag_id');

$table->timestamps();
});

~ 64 ~
}

public function down()


{
Schema::dropIfExists('post_tag');
}
}

php artisan migrate :‫ ونكتب االمر التالي‬cmd‫ثم نذهب الى‬

:‫ في قاعدة البيانات الخاصة لك كما موضح‬post_tage ‫نالحظ تم إضافة جدول‬

Laravel-Model-Controller
:‫ فنكتب االمر التالي‬tag‫ لل‬model ‫ في‬controller ‫نعمل‬
php artisan make:controller TagController –resource

~ 65 ~
app/http/controllers ‫في ملف‬

:‫ الذي قمنا بانشاءه سابقا ونكتب الكود التالي‬tagcontroller ‫ندخل الى ملف‬
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Tag;
class TagController extends Controller
{

public function index()


{
return view('tags.index')->with('tags',Tag::all());
}

public function create()


{
return view('tags.create');
}

public function store(Request $request)


{
$this->validate($request,[
'tag' => 'required'
]);
Tag::create([
'tag' => $request->tag
]);

return redirect()->back();
}

public function show($id)


{
//
}

~ 66 ~
public function edit($id)
{
$tag = Tag::find($id);
return view('tags.edit'->with('tag',$tag));
}

public function update(Request $request, $id)


{
$tag = Tag::find($id);
$tag = $request->tag;
$tag->save();
return redirect()->back();
}

public function destroy($id)


{
$tag = Tag::find($id);

$tag->destroy($id);
return redirect()->back();
}
}
platformiq/app/tag.php ‫ في ملف‬tag ‫وملف‬
:‫ ونكتب الكود التالي‬protected ‫ونعمل‬
<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Tag extends Model


{
protected $fillable = [
'tag'
];

public function posts()


{
return $this->belongsToMany('App\Post');
}
}

‫ كما فعلنا في‬platformiq/ resources/views/tag ‫ في‬Tag ‫ثم نقوم بعمل ملف‬


category ‫و‬post

~ 67 ~
:‫ ونكتب الكود التالي‬index.php‫ونعمل داخل هذا الملف صفحة‬
@extends('layouts.app')

@section('content')
<div class="container">
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card">
<div class="card-header">Tags</div>
<div class="card-body">
@if ($tags->count()>0)
<table class="table table-striped">
<thead>
<tr>
<th scope="col"> No </th>
<th scope="col"> Title </th>

<th scope="col">Edit</th>
</tr>
</thead>
<tbody>
@foreach ($tags as $tag)
<tr>
<td>
{{$tag->tag}}
</td>
<td>
<a class="" href="{{route('tag.edit',['id' =>$tag->id ])}}">
<img alt="Edit icon" src="https://img.icons8.com/clouds/2x/edit.png"
style="height:64px;width:64px;">
</a>
</td>
<td>
<a class="" href="{{route('tag.delete',['id' =>$tag->id ])}}">
<img alt="Delete Bin icon" style="height:64px;width:64px;"
src="https://img.icons8.com/clouds/2x/delete-forever.png"
lazy="loaded">
</a>
</td>
</tr>
@endforeach

@else
<p scope="row" class="text-center">No tags</p>
@endif
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
@endsection

~ 68 ~
:‫ ونكتب الكود التالي‬tag ‫ داخل ملف‬create.php ‫ثم صفحة‬
@extends('layouts.app')

@section('content')
<div class="container">
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card">
<div class="card-header">Create Tag</div>

<div class="card-body">
@if(count($errors)>0)
<ul class="navbar-nav mr-auto">
@foreach ($errors->all() as $error)
<li class="nav-item active">
{{$error}}
</li>
@endforeach

</ul>
@endif
<form action="{{route('tag.store')}}" method="POST" >
{{ csrf_field()}}
<div class="form-group">
<label for="name">Name</label>
<input type="text" class="form-control" name="tag"
placeholder="Enter tag name">
</div>
<button type="submit" class="btn btn-primary">Save</button>
</form>
</div>
</div>
</div>
</div>
</div>
@endsection
:‫ ونكتب الكود التالي‬tag‫ لكي نعمل قائمة منسدلة لل‬app.blade.php ‫ثم نذهب الى ملف‬
<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">

<!-- CSRF Token -->


<meta name="csrf-token" content="{{ csrf_token() }}">

<title>{{ config('app.name', 'Laravel') }}</title>

<!-- Scripts -->


<script src="{{ asset('js/app.js') }}" defer></script>

<!-- Fonts -->


<link rel="dns-prefetch" href="//fonts.gstatic.com">
<link href="https://fonts.googleapis.com/css?family=Nunito"
rel="stylesheet">

<!-- Styles -->


<link href="{{ asset('css/app.css') }}" rel="stylesheet">
</head>

~ 69 ~
<body>
<div id="app">
<nav class="navbar navbar-expand-md navbar-light bg-white shadow-sm">
<div class="container">
<a class="navbar-brand" href="{{ url('/') }}">
Rahma altaee
</a>
<ul class="navbar-nav mr-auto">
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown"
role="button" data-toggle="dropdown" aria-haspopup="true" aria-
expanded="false">
Categories
</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
<a class="dropdown-item"
href="{{route('category.create')}}">Create</a>
<a class="dropdown-item"
href="{{route('categories')}}">Categories</a>

<div class="dropdown-divider"></div>
<a class="dropdown-item" href="">Edit</a>
</div>
</li>
</ul>

<ul class="navbar-nav mr-auto">


<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown"
role="button" data-toggle="dropdown" aria-haspopup="true" aria-
expanded="false">
Tags
</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
<a class="dropdown-item" href="{{route('tag.create')}}">Create</a>
<a class="dropdown-item" href="{{route('tags')}}">Tags</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="">Edit</a>
</div>
</li>

</ul>

<ul class="navbar-nav mr-auto">


<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown"
role="button" data-toggle="dropdown" aria-haspopup="true" aria-
expanded="false">
Posts
</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
<a class="dropdown-item" href="{{route('post.create')}}">Create</a>
<a class="dropdown-item" href="{{route('posts')}}">Posts</a>

<div class="dropdown-divider"></div>
<a class="dropdown-item" href="{{route('post.trashed')}}">Posts
Softdeleted</a>
</div>

~ 70 ~
web.php ‫وأخيرا ملف‬
<?php

Route::get('/', function () {
return view('welcome');
});

Auth::routes();

Route::get('/home', 'HomeController@index')->name('home');

Route::group(['prefix' => 'user', 'middleware'=>'auth'], function ()


{
//Route::group([ 'middleware'=>'auth'], function () {

//route for posts


Route::get('/posts', 'PostsController@index')->name('posts');
Route::get('/post/trashed', 'PostsController@trashed')-
>name('post.trashed');
Route::get('/post/hdelete/{id}', 'PostsController@hdelete')-
>name('post.hdelete');
Route::get('/post/restore/{id}', 'PostsController@restore')-
>name('post.restore');
Route::get('/post/edit/{id}', 'PostsController@edit')-
>name('post.edit');
Route::post('/post/update/{id}', 'PostsController@update')-
>name('post.update');
Route::get('/post/create', 'PostsController@create')-
>name('post.create');
Route::post('/post/store', 'PostsController@store')-
>name('post.store');
Route::get('/post/delete/{id}', 'postsController@destroy')-
>name('post.delete');

//route for Categorie


Route::get('/categories', 'CategoriesController@index')-
>name('categories');
Route::get('/category/edit/{id}', 'CategoriesController@edit')-
>name('category.edit');
Route::get('/category/delete/{id}', 'CategoriesController@destroy')-
>name('category.delete');
Route::get('/category/create', 'CategoriesController@create')-
>name('category.create');
Route::post('/category/store', 'CategoriesController@store')-
>name('category.store');
Route::post('/category/update/{id}', 'CategoriesController@update')-
>name('category.update');

//route for Tag


Route::get('/tags', 'TagController@index')->name('tags');
Route::get('/tag/edit/{id}', 'TagController@edit')-
>name('tag.edit');
Route::get('/tag/delete/{id}', 'TagController@destroy')-
>name('tag.delete');
Route::get('/tag/create', 'TagController@create')-
>name('tag.create');
Route::post('/tag/store', 'TagController@store')-
>name('tag.store');

~ 71 ~
‫‪Route::post('/tag/update/{id}', 'TagController@update')-‬‬
‫;)'‪>name('tag.update‬‬

‫;)}‬
‫كما موضح بالصورة‬

‫عند الضغط على ‪ create‬من قائمة ‪tags‬‬


‫نقوم بإدخال ‪ tag‬معين مثل ‪ TagHeuer‬تظهر كما في الصورة‪:‬‬

‫وصورة قاعدة البيانات‪:‬‬

‫وعند الضغط على ‪ tage‬من القائمة المنسدلة تظهر هذه الصفحة‪:‬‬

‫~ ‪~ 72‬‬
:‫ تحذف‬delete ‫عند الضغط على‬

Laravel-post&&tag

post_tag‫ وقد عملتا سابقا جدول‬tag ‫ مع‬post ‫ربط‬


posts,categories,tags ‫فعند تفريغ صفحة‬
categories ‫ فندخل‬creatcategories ‫ يحولنا مباشرتا الى‬creatpost ‫ونذهب الى‬
‫ معين ثم يحولنا الى‬tags ‫ فنكتب‬tags ‫ مرة أخرى يحولنا الى‬creatpost ‫ونذهب الى‬
creatpost
postscontroller.php‫من خالل كتابة الكود التالي في ملف‬
public function create ‫في‬
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Category;
use App\Post;
use App\Tag;

class postsController extends Controller


{

public function index()


{
return view('posts.index')->with('posts',Post::all());
}

public function create()


{
$categories = Category::all();
if ($categories->count() ==0 ) {

return redirect()->route('category.create') ;
}

$tags = Tag::all();
if ($tags->count() ==0 ) {

~ 73 ~
return redirect()->route('tag.create') ;

return view('posts.create')->with('categories',$categories)
->with('tags',$tags);

}
:‫ نرى انه تم خزن البيانات كما في الصورة‬post_tag ‫فعند الذهاب الى جدول‬

‫ مع البيانات جميعها‬create ‫ ترجعنا الى صفحة‬posts ‫ من صفحة‬edit ‫* عند الضغط على‬


‫ أيضا التي اختارها المستخدم في البداية قبل التعديل‬tag‫و‬
post/edit.blade.php ‫فنذهب الى ملف‬
@extends('layouts.app')

@section('content')

<div class="container">
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card">
<div class="card-header">Edit Post {{$posts->title}}</div>

<div class="card-body">
@if(count($errors)>0)
<ul class="navbar-nav mr-auto">
@foreach ($errors->all() as $error)
<li class="nav-item active">
{{$error}}
</li>
@endforeach

</ul>
@endif

~ 74 ~
<form action="{{route('post.update',['id' => $posts->id ])}}"
method="POST" enctype="multipart/form-data">
{{ csrf_field()}}
<div class="form-group">
<label for="category_id">Category</label>
<select class="form-control" name="category_id" id="category">

@foreach ($categories as $category)


@if ($category->id == $posts->category_id)
<option value="{{$category->id}}" selected>{{$category-
>name}}</option>

@else
<option value="{{$category->id}}" >{{$category->name}}</option>
@endif

@endforeach

</select>
</div>

<div class="form-check">
@foreach ($tags as $tag)
<label class="form-check-label" >
<input class="form-check-input" type="checkbox" name="tags[]"
value="{{$tag->id}}"

@foreach ($posts->tags as $ta)


@if ($tag->id == $ta->id)
checked
@endif
@endforeach
> {{$tag->tag}} </label><br>
@endforeach

</div>

<div class="form-group">
<label for="title">Title</label>
<input type="text" class="form-control" name="title"
value="{{$posts->title}}">
</div>
<div class="form-group">
<label for="content">Description</label>
<textarea class="form-control" name="content" id="content" rows="8"
cols="8">
{{ $posts->content }}
</textarea>
</div>
<div class="form-group">
<label for="featured">Photo</label>
<input type="file" class="form-control-file" name="featured">
</div>
<button type="submit" class="btn btn-primary">Update</button>
</form>

</div>
</div>
</div>

~ 75 ~
</div>
</div>
@endsection
public function update‫ في‬postcontroller ‫ثم ملف‬
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Category;
use App\Post;
use App\Tag;

class postsController extends Controller


{
public function update(Request $request, $id)
{

$post = Post::find($id);

$this->validate($request,[
"title" => "required",
"content" => "required",
"category_id" => "required"

]);

if ( $request->hasFile('featured') ) {
$featured = $request->featured;
$featured_new_name = time().$featured->getClientOriginalName();
$featured->move('uploads/posts/',$featured_new_name);

$post->featrued = 'uploads/posts/'.$featured_new_name;

}
//dd($post);
$post->title = $request->title;
$post->content = $request->content;
$post->category_id = $request->category_id;
$post->save();

$post->tags()->sync($request->tags);

return redirect()->route('posts');

~ 76 ~
Laravel-One To One

profiles ‫ نعمل جدول جديد باسم‬one-to-one ‫طريقة‬


migration/ 2014_10_12_000000_create_users_table :‫نذهب الى ملف‬
:‫ونضيف الكود التالي‬
<?php

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

class CreateUsersTable extends Migration


{

public function up()


{
Schema::create('users', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('name');
$table->string('email')->unique();
$table->boolean('admin')->default(0);
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
}

public function down()


{
Schema::dropIfExists('users');
}
}

php artisan make:model profile -m :profile ‫ونكتب االمر التالي لعمل جدول‬

~ 77 ~
Laravel-Navbar-Profile

:‫ ونكتب الكود التالي‬profile.php ‫فندخل الى هذا الملف‬


<?php

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

class CreateProfilesTable extends Migration


{

public function up()


{
Schema::create('profiles', function (Blueprint $table) {
$table->increments('id');
$table->string('avatar')->nullable();
$table->integer('user_id') ;
$table->string('facebook')->nullable() ;
$table->string('twitter')->nullable() ;
$table->string('github')->nullable() ;
$table->string('about')->nullable() ;

$table->timestamps();
});
}

public function down()


{
Schema::dropIfExists('profiles');
}
}

app/user.php ‫ثم نذهب الى‬


:‫ونكتب الكود التالي‬
<?php

namespace App;

use Illuminate\Notifications\Notifiable;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable


{
use Notifiable;

protected $fillable = [
'name', 'email', 'password','admin',
];

~ 78 ~
protected $hidden = [
'password', 'remember_token',
];

public function profile(){


return $this->hasOne('App\Profile');
}
}

migration ‫ لعمل‬cmd ‫ثم نكتب االمر التالي في‬


php artisan migrate

‫عند إضافة حقل جديد الى الصفحة دائما نكتب االمر التالي لكي يقوم بإلغاء جميع‬:‫مالحظة‬
‫البيانات ويصفرها‬
php artisan migrate:refresh
‫تم إضافة الجدول مع الحقول التي قمنا بادخالها في قاعدة‬
‫البيانات‬

:‫ ونكتب الكود التالي‬app/profile ‫نذهب الى ملف‬


<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class profile extends Model


{
public function user(){
return $this->belongsTo('App\User');
}

~ 79 ~
protected $fillable = [
'avatar', 'user_id', 'facebook','twitter','github','about'

];
app/views/layouts/app.blade.php ‫ثم ندخل الى ملف‬
navbar ‫ الى‬profile ‫ونكتب الكود التالي الضافة‬
<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">

<!-- CSRF Token -->


<meta name="csrf-token" content="{{ csrf_token() }}">

<title>{{ config('app.name', 'Laravel') }}</title>


@yield('styles')
<!-- Scripts -->
<script src="{{ asset('js/app.js') }}" defer></script>

<!-- Fonts -->


<link rel="dns-prefetch" href="//fonts.gstatic.com">
<link href="https://fonts.googleapis.com/css?family=Nunito"
rel="stylesheet" type="text/css">
<link rel="stylesheet"
href="https://use.fontawesome.com/releases/v5.6.3/css/all.css"
integrity="sha384-
UHRtZLI+pbxtHCWp1t77Bi1L4ZtiqrqD80Kn4Z8NTSRyMA2Fd33n5dQ8lWUE00s/"
crossorigin="anonymous">
<!-- Styles -->
<link href="{{ asset('css/app.css') }}" rel="stylesheet">
</head>
<body>
<div id="app">
<nav class="navbar navbar-expand-md navbar-light navbar-laravel">
<div class="container">
<a class="navbar-brand" href="{{ url('/') }}">
Rahma Altaee
</a>
@if (Auth::user())
<ul class="navbar-nav mr-auto">
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown"
role="button" data-toggle="dropdown" aria-haspopup="true" aria-
expanded="false">
Settings
</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
<a class="dropdown-item" href="{{route('settings')}}">Show</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="">Edit</a>
</div>
</li>
</ul>
@endif
<ul class="navbar-nav mr-auto">

<li class="nav-item dropdown">

~ 80 ~
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown"
role="button" data-toggle="dropdown" aria-haspopup="true" aria-
expanded="false">
Categories
</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
<a class="dropdown-item"
href="{{route('category.create')}}">Create</a>
<a class="dropdown-item"
href="{{route('categories')}}">Categories</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="">Edit</a>
</div>
</li>
</ul>
<ul class="navbar-nav mr-auto">
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown"
role="button" data-toggle="dropdown" aria-haspopup="true" aria-
expanded="false">
Tags
</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
<a class="dropdown-item" href="{{route('tag.create')}}">Create</a>
<a class="dropdown-item" href="{{route('tags')}}">Tags</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="">Edit</a>
</div>
</li>

</ul>
<ul class="navbar-nav mr-auto">
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown"
role="button" data-toggle="dropdown" aria-haspopup="true" aria-
expanded="false">
Posts
</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
<a class="dropdown-item" href="{{route('post.create')}}">Create</a>
<a class="dropdown-item" href="{{route('posts')}}">Posts</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="{{route('post.trashed')}}">Posts soft
deleted</a>
</div>
</li>
</ul>
<button class="navbar-toggler" type="button" data-toggle="collapse"
data-target="#navbarSupportedContent" aria-
controls="navbarSupportedContent" aria-expanded="false" aria-
label="{{ __('Toggle navigation') }}">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<!-- Left Side Of Navbar -->
<ul class="navbar-nav mr-auto">
</ul>
<!-- Right Side Of Navbar -->
<ul class="navbar-nav ml-auto">
<!-- Authentication Links -->
@guest

~ 81 ~
<li class="nav-item">
<a class="nav-link" href="{{ route('login') }}">{{ __('Login') }}</a>
</li>
@if (Route::has('register'))
<li class="nav-item">
<a class="nav-link" href="{{ route('register') }}">{{ __('Register')
}}</a>
</li>
@endif
@else
<li class="nav-item dropdown">
<a id="navbarDropdown" class="nav-link dropdown-toggle" href="#"
role="button" data-toggle="dropdown" aria-haspopup="true" aria-
expanded="false" v-pre>
{{ Auth::user()->name }} <span class="caret"></span>
</a>
<div class="dropdown-menu dropdown-menu-right" aria-
labelledby="navbarDropdown">
<a class="dropdown-item" href="{{route('users.profile')}}" >
Profile </a>
<a class="dropdown-item" href="{{ route('logout') }}"
onclick="event.preventDefault();
document.getElementById('logout-form').submit();">
{{ __('Logout') }}
</a>
<form id="logout-form" action="{{ route('logout') }}" method="POST"
style="display: none;">
@csrf
</form>
</div>
</li>
@endguest
</ul>
</div>
</div>
</nav>
<main class="py-4">
@yield('content')
</main>
</div>
@yield('scripts')
</body>
</html>

:‫فتظهر كما في الصورة‬

~ 82 ~
Web.php ‫صفحة‬
<?php

Auth::routes();

Auth::routes(['verify' => true]);


Route::get('/home', 'HomeController@index')->name('home');

//Route::group(['prefix' => 'user', 'middleware'=>'auth'], function


() {
Route::group([ 'middleware'=>'auth'], function () {

//route for posts


Route::get('/posts', 'PostsController@index')->name('posts');
Route::get('/post/trashed', 'PostsController@trashed')-
>name('post.trashed');
Route::get('/post/hdelete/{id}', 'PostsController@hdelete')-
>name('post.hdelete');
Route::get('/post/restore/{id}', 'PostsController@restore')-
>name('post.restore');
Route::get('/post/edit/{id}', 'PostsController@edit')-
>name('post.edit');
Route::post('/post/update/{id}', 'PostsController@update')-
>name('post.update');
Route::get('/post/create', 'PostsController@create')-
>name('post.create');
Route::post('/post/store', 'PostsController@store')-
>name('post.store');
Route::get('/post/delete/{id}', 'postsController@destroy')-
>name('post.delete');

//route for Categorie


Route::get('/categories', 'CategoriesController@index')-
>name('categories');
Route::get('/category/edit/{id}', 'CategoriesController@edit')-
>name('category.edit');
Route::get('/category/delete/{id}', 'CategoriesController@destroy')-
>name('category.delete');
Route::get('/category/create', 'CategoriesController@create')-
>name('category.create');
Route::post('/category/store', 'CategoriesController@store')-
>name('category.store');
Route::post('/category/update/{id}', 'CategoriesController@update')-
>name('category.update');

//route for Tag


Route::get('/tags', 'TagController@index')->name('tags');
Route::get('/tag/edit/{id}', 'TagController@edit')-
>name('tag.edit');
Route::get('/tag/delete/{id}', 'TagController@destroy')-
>name('tag.delete');

~ 83 ~
Route::get('/tag/create', 'TagController@create')-
>name('tag.create');
Route::post('/tag/store', 'TagController@store')-
>name('tag.store');
Route::post('/tag/update/{id}', 'TagController@update')-
>name('tag.update');

//route for users


Route::get('/users', 'UsersController@index')->name('users');
Route::get('/users/admin/{id}', 'UsersController@admin')-
>name('users.admin'); //->middleware('admin');
Route::get('/users/notadmin/{id}', 'UsersController@notAdmin')-
>name('users.not.admin');
Route::get('/users/create', 'UsersController@create')-
>name('users.create');
Route::post('/users/store', 'UsersController@store')-
>name('users.store');
Route::get('/users/delete/{id}', 'UsersController@destroy')-
>name('users.delete');

//route for user profile


Route::get('/users/profile', 'ProfilesController@index')-
>name('users.profile');
Route::post('/users/profile/update', 'ProfilesController@update')-
>name('users.profile.update');
Route::get('/users/profile/create', 'ProfilesController@create')-
>name('users.profile.create');

:‫ تظهر لنا كما في الصورة‬profile ‫فعند الضغط على‬

~ 84 ~
Laravel-Navbar-Users

users ‫ نعمل‬tag,categories ‫ الى جانب قائمة‬navbar ‫االن نعمل صفحة في‬


app.blade.php ‫فنذهب الى ملف‬
<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">

<!-- CSRF Token -->


<meta name="csrf-token" content="{{ csrf_token() }}">

<title>{{ config('app.name', 'Laravel') }}</title>

<!-- Scripts -->


<script src="{{ asset('js/app.js') }}" defer></script>

<!-- Fonts -->


<link rel="dns-prefetch" href="//fonts.gstatic.com">
<link href="https://fonts.googleapis.com/css?family=Nunito"
rel="stylesheet">

<!-- Styles -->


<link href="{{ asset('css/app.css') }}" rel="stylesheet">
</head>
<body>
<div id="app">
<nav class="navbar navbar-expand-md navbar-light bg-white shadow-sm">
<div class="container">
<a class="navbar-brand" href="{{ url('/') }}">
Rahma altaee
</a>

<ul class="navbar-nav mr-auto">


<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown"
role="button" data-toggle="dropdown" aria-haspopup="true" aria-
expanded="false">
Users
</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown">

<a class="dropdown-item" href="{{route('users')}}">Users</a>


<a class="dropdown-item" href="{{route('users.create')}}">Create
user</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="">Edit</a>
</div>
</li>
</ul>
<ul class="navbar-nav mr-auto">
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown"
role="button" data-toggle="dropdown" aria-haspopup="true" aria-
expanded="false">

~ 85 ~
Categories
</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
<a class="dropdown-item"
href="{{route('category.create')}}">Create</a>
<a class="dropdown-item"
href="{{route('categories')}}">Categories</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="">Edit</a>
</div>
</li>
</ul>
<ul class="navbar-nav mr-auto">
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown"
role="button" data-toggle="dropdown" aria-haspopup="true" aria-
expanded="false">
Tags
</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
<a class="dropdown-item" href="{{route('tag.create')}}">Create</a>
<a class="dropdown-item" href="{{route('tags')}}">Tags</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="">Edit</a>
</div>
</li>
</ul>
<ul class="navbar-nav mr-auto">
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown"
role="button" data-toggle="dropdown" aria-haspopup="true" aria-
expanded="false">
Posts
</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
<a class="dropdown-item" href="{{route('post.create')}}">Create</a>
<a class="dropdown-item" href="{{route('posts')}}">Posts</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="{{route('post.trashed')}}">Posts
Softdeleted</a>
</div>
</li>
</ul>
<button class="navbar-toggler" type="button" data-toggle="collapse"
data-target="#navbarSupportedContent" aria-
controls="navbarSupportedContent" aria-expanded="false" aria-
label="{{ __('Toggle navigation') }}">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<!-- Left Side Of Navbar -->
<ul class="navbar-nav mr-auto">
</ul>
<!-- Right Side Of Navbar -->
<ul class="navbar-nav ml-auto">
<!-- Authentication Links -->
@guest
<li class="nav-item">
<a class="nav-link" href="{{ route('login') }}">{{ __('Login') }}</a>
</li>
@if (Route::has('register'))

~ 86 ~
<li class="nav-item">
<a class="nav-link" href="{{ route('register') }}">{{ __('Register')
}}</a>
</li>
@endif
@else
<li class="nav-item dropdown">
<a id="navbarDropdown" class="nav-link dropdown-toggle" href="#"
role="button" data-toggle="dropdown" aria-haspopup="true" aria-
expanded="false" v-pre>
{{ Auth::user()->name }} <span class="caret"></span>
</a>
<div class="dropdown-menu dropdown-menu-right" aria-
labelledby="navbarDropdown">
<a class="dropdown-item" href="{{route('users.profile')}}" >
Profile </a>
<a class="dropdown-item" href="{{ route('logout') }}"
onclick="event.preventDefault();
document.getElementById('logout-form').submit();">
{{ __('Logout') }}
</a>
<form id="logout-form" action="{{ route('logout') }}" method="POST"
style="display: none;">
@csrf
</form>
</div>
</li>
@endguest
</ul>
</div>
</div>
</nav>
<main class="py-4">
@yield('content')
</main>
</div>
@yield('scripts')
</body>
</html>

:‫ وكتابةاالمر التالي‬user ‫ لملف‬controller ‫ثم نعمل‬


php artisan make:controller usersController –resource

~ 87 ~
:‫ الذي قمنا بانشاءه ونكتب الكود التالي‬userscontroller ‫ندخل الى‬
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\User;
use App\profile;

class usersController extends Controller


{

public function index()


{
return view('users.index')->with('users',User::all()) ;
}

public function create()


{

return view('users.create') ;
}
public function store(Request $request)
{
$this->validate($request,[
'name' => 'required',
'email' => 'required',

]);
$user = User::create([
'name' => $request->name,
'email' => $request->email,
'password' => bcrypt('password')
]);

$profile = Profile::create([
'user_id' => $user->id,
'avatar' => 'uploads/avatar/1.png'

]);
return redirect()->route('users');
}

public function show($id)


{
//
}

public function edit($id)


{
//
}

public function update(Request $request, $id)


{
//
}

~ 88 ~
public function destroy($id)
{
$user = User::find($id);
$user->profile->delete($id);
$user->delete();
return redirect()->route('users');

public function admin($id)


{
$user = User::find($id);
$user->admin = 1;
$user->save();
return redirect()->route('users');
}
public function notAdmin($id)
{
$user = User::find($id);
$user->admin = 0;
$user->save();
return redirect()->route('users');
}
}

users,profiles ‫ الضافة‬web.php ‫ثم ملف‬

<?php

Route::get('/', function () {
return view('welcome');
});

Auth::routes();

Route::get('/home', 'HomeController@index')->name('home');

Route::group(['prefix' => 'user', 'middleware'=>'auth'], function ()


{

//route for posts


Route::get('/posts', 'PostsController@index')->name('posts');
Route::get('/post/trashed', 'PostsController@trashed')-
>name('post.trashed');
Route::get('/post/hdelete/{id}', 'PostsController@hdelete')-
>name('post.hdelete');
Route::get('/post/restore/{id}', 'PostsController@restore')-
>name('post.restore');
Route::get('/post/edit/{id}', 'PostsController@edit')-
>name('post.edit');
Route::post('/post/update/{id}', 'PostsController@update')-
>name('post.update');

~ 89 ~
Route::get('/post/create', 'PostsController@create')-
>name('post.create');
Route::post('/post/store', 'PostsController@store')-
>name('post.store');
Route::get('/post/delete/{id}', 'postsController@destroy')-
>name('post.delete');

//route for Categorie


Route::get('/categories', 'CategoriesController@index')-
>name('categories');
Route::get('/category/edit/{id}', 'CategoriesController@edit')-
>name('category.edit');
Route::get('/category/delete/{id}', 'CategoriesController@destroy')-
>name('category.delete');
Route::get('/category/create', 'CategoriesController@create')-
>name('category.create');
Route::post('/category/store', 'CategoriesController@store')-
>name('category.store');
Route::post('/category/update/{id}', 'CategoriesController@update')-
>name('category.update');

//route for Tag


Route::get('/tags', 'TagController@index')->name('tags');
Route::get('/tag/edit/{id}', 'TagController@edit')->name('tag.edit');
Route::get('/tag/delete/{id}', 'TagController@destroy')-
>name('tag.delete');
Route::get('/tag/create', 'TagController@create')-
>name('tag.create');
Route::post('/tag/store', 'TagController@store')->name('tag.store');
Route::post('/tag/update/{id}', 'TagController@update')-
>name('tag.update');

//route for users


Route::get('/users', 'UsersController@index')->name('users');
Route::get('/users/admin/{id}', 'UsersController@admin')-
>name('users.admin'); //->middleware('admin');
Route::get('/users/notadmin/{id}', 'UsersController@notAdmin')-
>name('users.not.admin');
Route::get('/users/create', 'UsersController@create')-
>name('users.create');
Route::post('/users/store', 'UsersController@store')-
>name('users.store');
Route::post('/users/delete{id}', 'UsersController@destroy')-
>name('users.delete');

//route for user profile


Route::get('/users/profile', 'ProfilesController@index')-
>name('users.profile');
Route::post('/users/profile/update', 'ProfilesController@update')-
>name('users.profile.update');

});

~ 90 ~
platformiq/resources/views/users‫ داخل ملف‬users ‫ثم نعمل ملف اسمة‬
creat.blade.php ‫ونضع فيه ملف‬
@extends('layouts.app')

@section('content')
<div class="container">
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card">
<div class="card-header">Create User</div>

<div class="card-body">
@if(count($errors)>0)
<ul class="navbar-nav mr-auto">
@foreach ($errors->all() as $error)
<li class="nav-item active">
{{$error}}
</li>
@endforeach

</ul>
@endif
<form action="{{route('users.store')}}" method="POST" >
{{ csrf_field()}}
<div class="form-group">
<label for="name">Name</label>
<input type="text" class="form-control" name="name"
placeholder="Enter user name">
</div>

<div class="form-group">
<label for="name">Email</label>
<input type="text" class="form-control" name="email"
placeholder="Enter user email">
</div>

<button type="submit" class="btn btn-primary">Save</button>


</form>
</div>
</div>
</div>
</div>
</div>
@endsection

users ‫ ونضعة في ملف‬index.php ‫ثم نعمل ملف اخر باسم‬


@extends('layouts.app')

@section('content')
<div class="container">
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card">
<div class="card-header">Users</div>

~ 91 ~
<div class="card-body">

@if ($users->count()>0)

<table class="table table-striped">


<thead>
<tr>
<th scope="col"> No </th>
<th scope="col"> Title </th>

<th scope="col">Edit</th>
<th scope="col">Delete</th>
</tr>
</thead>
<tbody>
@foreach ($users as $user)
<tr>
<th scope="row">
<img src="https://www.pngarts.com/files/3/Avatar-PNG-Picture.png"
alt="" class="img-thumbnail" width="50px" height="50px">
</th>
<th scope="row">{{$user->name}}</th>
<td>
@if ($user->admin)
<a class="" href="{{route('users.not.admin',['id' => $user->id])}}">
delete admin
</a>
@else

<a class="" href="{{route('users.admin',['id' => $user->id])}}">


make admin
</a>
@endif
<a class="" href="">

</a>
</td>

<td>
<a class="" href="">
<img alt="Delete icon" src="https://img.icons8.com/cotton/2x/delete-
sign--v2.png" style="height: 64px; width: 64px;">
</a>
</td>
</tr>
@endforeach

@else
<p scope="row" class="text-center">No Users</p>
@endif
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
@endsection

~ 92 ~
‫ داخل ملف‬avatar ‫ ويكون باسم‬posts ‫ثم نعمل ملف اخر الى جانب ملف‬
:‫ لكي نخزن فيه صورة المستخدم‬platformiq/public
profilescontroller.php ‫ثم ملف‬
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Auth;
use App\Profile;
class ProfilesController extends Controller
{

public function index()


{

$user = Auth::user();
$id = Auth::id();

if ($user->profile == null) {

$profile = Profile::create([
'user_id' => $id,
'avatar' => 'uploads/avatar/1.png'
]);

return view('users.profile')->with('user',Auth::user());
}

public function create()


{
//
}

public function store(Request $request)


{
//
}

public function show($id)


{
//
}

public function edit($id)


{
//
}

public function update(Request $request )

~ 93 ~
{

$this->validate($request,[
"name" => "required",
"email" => "required|email"

]);

$user = Auth::user();

if ( $request->hasFile('avatar') ) {
$avatar = $request->avatar;
$avatar_new_name = time().$avatar-
>getClientOriginalName();
$avatar->move('uploads/avatar/',$avatar_new_name);
$user->profile->avatar =
'uploads/avatar/'.$avatar_new_name;
$user->profile->save();

$user->name = $request->name;
$user->email = $request->email;
$user->profile->facebook = $request->facebook;
$user->profile->twitter = $request->twitter;
$user->profile->github = $request->github;
$user->profile->about = $request->about;
$user->save();
$user->profile->save();

if ( $request->has('password') ) {

$user->password = bcrypt($request->password);
$user->save();
}
return redirect()->back();

public function destroy($id)


{
//
}

‫فتظهر لنا كما في الصورة‬

~ 94 ~
‫عند الضغط على ‪ users‬من القائمة المنسدلة تظهر كما في الصورة‪:‬‬

‫عند الضغط على ‪ make admin‬يصبح هنا الشخص ادمن كما في الصورة‪:‬‬

‫وعند الضغط على ‪ create user‬من القائمة المنسدلة لكي نقوم بعمل ‪ user‬جديد كما في‬
‫الصورة‪:‬‬

‫~ ‪~ 95‬‬
php artisan users-m‫نعمل جدول في قاعدة البيانات من خالل االمر‬
:‫ ونكتب فيه الكود التالي‬create users table‫فندخل الى ملف‬
<?php

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

class UserIdPosts extends Migration


{

public function up()


{
Schema::table('posts', function (Blueprint $table) {
$table->integer('user_id');
});
}

public function down()


{
Schema::table('posts', function (Blueprint $table) {

$table->dropColumn('user_id');

});
}
}

php artisan migrate:refresh :‫نعمل جدول في قاعدة البيانات من خالل االمر‬

:‫ كما في الصورة‬user‫نالحظ انه قام بعمل جدول في قاعدة البيانات باسم‬

user ‫ يعني انه قام بعمل هذا الشخص‬admin ‫ في حقل‬1 ‫وقام بإدخال البيانات والرقم‬
:‫كما في الصورة‬

~ 96 ~
Laravel-Navbar-Settings

setting ‫لعمل جدول وقائمة منسدلة‬


php artisan make:model settings –m

:‫ ونكتب فيه الكود التالي‬create settings table‫نذهب الى ملف‬


<?php

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

class CreateSettingsTable extends Migration


{

public function up()


{
Schema::create('settings', function (Blueprint $table) {
$table->increments('id');
$table->string('blog_name') ;
$table->string('phone_number') ;
$table->string('blog_email') ;
$table->string('address') ;

$table->timestamps();
});
}

public function down()


{
Schema::dropIfExists('settings');
}
}

platformiq/app/ setings.php ‫ملف‬


:‫ونكتب الكود التالي‬
<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

~ 97 ~
class Setting extends Model
{
protected $fillable = ['blog_name', 'phone_number' , 'blog_email'
, 'address'];
}

platformiq/resources/views /settings ‫ في ملف‬settings ‫ثم نعمل ملف باسم‬


settings.blade.php‫ونعمل بداخله ملف‬
:‫ونكتب فيه الكود التالي‬
@extends('layouts.app')

@section('content')
<div class="container">
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card">
<div class="card-header">Edit Settings</div>
<div class="card-body">
@if(count($errors)>0)
<ul class="navbar-nav mr-auto">
@foreach ($errors->all() as $error)
<li class="nav-item active">
{{$error}}
</li>
@endforeach

</ul>
@endif
<form action="{{route('settings.update')}}" method="POST" >
{{ csrf_field()}}
<div class="form-group">
<label for="blog_name">Blog name</label>
<input type="text" class="form-control" name="blog_name"
value="{{$settings->blog_name}}">
</div>
<div class="form-group">
<label for="phone_number">Phone </label>
<input type="text" class="form-control" name="phone_number"
value="{{$settings->phone_number}}">
</div>
<div class="form-group">
<label for="blog_email">Email</label>
<input type="text" class="form-control" name="blog_email"
value="{{$settings->blog_email}}">
</div>
<div class="form-group">
<label for="address">Address</label>
<input type="text" class="form-control" name="address"
value="{{$settings->address}}">
</div>
<button type="submit" class="btn btn-primary">Update</button>
</form>
</div>

~ 98 ~
</div>
</div>
</div>
</div>
@endsection
seeder ‫لملئ البيانات في الجداول اوتوماتيكيا نستخدم االمر‬
:‫فنعمل االمر‬

php artisan make:seeder SettingsSeeder


platrofmiq/database/seeds/ SettingsSeeder‫ملف‬
:‫ونكتب فيه الكود التالي‬
<?php

use Illuminate\Database\Seeder;

class SettingsSeeder extends Seeder


{

public function run()


{

\App\Setting::create([
'blog_name'=> 'Hours Project' ,
'phone_number'=> '00 964 123 1234' ,
'blog_email'=> 'rahma.taee@codeforiraq.org' ,
'address'=> 'IRAQ - mosul'
]);
}
}

‫ كما فعلنا في السابق‬controller ‫ثم بعد ذلك نعمل‬

php artisan make:controller SettingsController:‫فنقوم بكتابة المر التالي‬

~ 99 ~
:‫ونكتب بداخله الكود التالي‬
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Setting;
class SettingsController extends Controller
{

public function index(){


return view('settings.settings')->with('settings',
Setting::first());
}

public function update(Request $request){

$this->validate($request,[
"blog_name" => "required",
"phone_number" => "required",
"blog_email" => "required" ,
"address" => "required"

]);

$setting = Setting::first();

$setting->blog_name = $request->blog_name;
$setting->phone_number = $request->phone_number;
$setting->blog_email = $request->blog_email;
$setting->address = $request->address;
$setting->save();

return redirect()->back();

}
}

setting ‫ الضافة‬web.php ‫ثم بعد ذلك نذهب الى ملف‬


:‫فنكتب الكود التالي‬
<?php

Auth::routes();

Auth::routes(['verify' => true]);


Route::get('/home', 'HomeController@index')->name('home');

~ 100 ~
//Route::group(['prefix' => 'user', 'middleware'=>'auth'], function
() {
Route::group([ 'middleware'=>'auth'], function () {

//route for posts


Route::get('/posts', 'PostsController@index')->name('posts');
Route::get('/post/trashed', 'PostsController@trashed')-
>name('post.trashed');
Route::get('/post/hdelete/{id}', 'PostsController@hdelete')-
>name('post.hdelete');
Route::get('/post/restore/{id}', 'PostsController@restore')-
>name('post.restore');
Route::get('/post/edit/{id}', 'PostsController@edit')-
>name('post.edit');
Route::post('/post/update/{id}', 'PostsController@update')-
>name('post.update');
Route::get('/post/create', 'PostsController@create')-
>name('post.create');
Route::post('/post/store', 'PostsController@store')-
>name('post.store');
Route::get('/post/delete/{id}', 'postsController@destroy')-
>name('post.delete');

//route for Categorie


Route::get('/categories', 'CategoriesController@index')-
>name('categories');
Route::get('/category/edit/{id}', 'CategoriesController@edit')-
>name('category.edit');
Route::get('/category/delete/{id}', 'CategoriesController@destroy')-
>name('category.delete');
Route::get('/category/create', 'CategoriesController@create')-
>name('category.create');
Route::post('/category/store', 'CategoriesController@store')-
>name('category.store');
Route::post('/category/update/{id}', 'CategoriesController@update')-
>name('category.update');

//route for Tag


Route::get('/tags', 'TagController@index')->name('tags');
Route::get('/tag/edit/{id}', 'TagController@edit')-
>name('tag.edit');
Route::get('/tag/delete/{id}', 'TagController@destroy')-
>name('tag.delete');
Route::get('/tag/create', 'TagController@create')-
>name('tag.create');
Route::post('/tag/store', 'TagController@store')-
>name('tag.store');
Route::post('/tag/update/{id}', 'TagController@update')-
>name('tag.update');

//route for users


Route::get('/users', 'UsersController@index')->name('users');
Route::get('/users/admin/{id}', 'UsersController@admin')-
>name('users.admin'); //->middleware('admin');
Route::get('/users/notadmin/{id}', 'UsersController@notAdmin')-
>name('users.not.admin');
Route::get('/users/create', 'UsersController@create')-
>name('users.create');
Route::post('/users/store', 'UsersController@store')-
>name('users.store');

~ 101 ~
Route::get('/users/delete/{id}', 'UsersController@destroy')-
>name('users.delete');

//route for user profile


Route::get('/users/profile', 'ProfilesController@index')-
>name('users.profile');
Route::post('/users/profile/update', 'ProfilesController@update')-
>name('users.profile.update');
Route::get('/users/profile/create', 'ProfilesController@create')-
>name('users.profile.create');

//route for Settings


Route::get('/settings', 'SettingsController@index')-
>name('settings');
Route::post('/settings/update', 'SettingsController@update')-
>name('settings.update');

//route for User front end


Route::get('/', 'siteUIcontroller@index')->name('index');
Route::get('/category/{id}', 'siteUIcontroller@category')-
>name('category.show');
Route::get('/tag/{id}', 'siteUIcontroller@tag')-
>name('tag.show');

});

:‫فتظهر كما في الصورة‬

~ 102 ~
‫وعند الضغط على كلمة ‪ show‬من القائمة تظهر كما في الصورة‪:‬‬

‫وأيضا تستطيع تغيير أي حقل وتقوم بعمل ‪ update‬فيقوم بالتحديث الجديد ‪..‬‬

‫واالن قام بعمل جدول ‪ settings‬في قاعدة البيانات وقام بملئ البيانات داخلها‪:‬‬

‫~ ‪~ 103‬‬
Laravel-Dashboard

‫ لحساب عدد‬Dashboard ‫ نقوم بعمل‬navbar ‫واخير بعد عمل كل القوائم والصفحات في‬
‫البيانات الموجدودة في كل جدول‬
dashboard.blade.php ‫فنعمل صفحة‬
:‫ونكتب الكود التالي‬
@extends('layouts.app')

@section('content')
<div class="container">
<div class="row justify-content-center">
<div class="col-md-10">
<div class="card">
<div class="card-header">Dashboard</div>

<div class="card-body">
@if (session('status'))
<div class="alert alert-success" role="alert">
{{ session('status') }}
</div>
@endif

<div class="container">
<div class="row">
<div class="col-sm">
<div class="card text-white bg-primary mb-3" style="max-width:
18rem;">
<div class="card-header">Posts</div>
<div class="card-body">
<h5 class="card-title">{{$post_count}}</h5>
</div>
</div>
</div>
<div class="col-sm">
<div class="card text-white bg-secondary mb-3" style="max-width:
18rem;">
<div class="card-header">Users</div>
<div class="card-body">
<h5 class="card-title">{{$users_count}}</h5>
</div>
</div>
</div>
<div class="col-sm">
<div class="card text-white bg-success mb-3" style="max-width:
18rem;">
<div class="card-header">Categories</div>
<div class="card-body">
<h5 class="card-title">{{$categories_count}}</h5>
</div>
</div>

~ 104 ~
</div>
</div>
</div>

<div class="container">
<div class="row">
<div class="col-sm">
<div class="card text-white bg-dark mb-3" style="max-width: 18rem;">
<div class="card-header">Tags</div>
<div class="card-body">
<h5 class="card-title">{{$tags_count}}</h5>
</div>
</div>

</div>
<div class="col-sm">
<div class="card bg-light mb-3" style="max-width: 18rem;">
<div class="card-header">Trashed Posts</div>
<div class="card-body">
<h5 class="card-title">{{$trashed_count}}</h5>
</div>
</div>
</div>
<div class="col-sm">
<div class="card text-white bg-info mb-3" style="max-width: 18rem;">
<div class="card-header">Header</div>
<div class="card-body">
<h5 class="card-title">Info card title</h5>
</div>
</div>
</div>
</div>
</div>

</div>
</div>
</div>
</div>
</div>
@endsection

:‫ ونكتب فيه الكود التالي‬web.php ‫ثم ملف‬


<?php

Auth::routes();

Auth::routes(['verify' => true]);


Route::get('/home', 'HomeController@index')->name('home');

~ 105 ~
//Route::group(['prefix' => 'user', 'middleware'=>'auth'], function
() {
Route::group([ 'middleware'=>'auth'], function () {

//route for posts


Route::get('/posts', 'PostsController@index')->name('posts');
Route::get('/post/trashed', 'PostsController@trashed')-
>name('post.trashed');
Route::get('/post/hdelete/{id}', 'PostsController@hdelete')-
>name('post.hdelete');
Route::get('/post/restore/{id}', 'PostsController@restore')-
>name('post.restore');
Route::get('/post/edit/{id}', 'PostsController@edit')-
>name('post.edit');
Route::post('/post/update/{id}', 'PostsController@update')-
>name('post.update');
Route::get('/post/create', 'PostsController@create')-
>name('post.create');
Route::post('/post/store', 'PostsController@store')-
>name('post.store');
Route::get('/post/delete/{id}', 'postsController@destroy')-
>name('post.delete');

//route for Categorie


Route::get('/categories', 'CategoriesController@index')-
>name('categories');
Route::get('/category/edit/{id}', 'CategoriesController@edit')-
>name('category.edit');
Route::get('/category/delete/{id}', 'CategoriesController@destroy')-
>name('category.delete');
Route::get('/category/create', 'CategoriesController@create')-
>name('category.create');
Route::post('/category/store', 'CategoriesController@store')-
>name('category.store');
Route::post('/category/update/{id}', 'CategoriesController@update')-
>name('category.update');

//route for Tag


Route::get('/tags', 'TagController@index')->name('tags');
Route::get('/tag/edit/{id}', 'TagController@edit')-
>name('tag.edit');
Route::get('/tag/delete/{id}', 'TagController@destroy')-
>name('tag.delete');
Route::get('/tag/create', 'TagController@create')-
>name('tag.create');
Route::post('/tag/store', 'TagController@store')-
>name('tag.store');
Route::post('/tag/update/{id}', 'TagController@update')-
>name('tag.update');

//route for users


Route::get('/users', 'UsersController@index')->name('users');
Route::get('/users/admin/{id}', 'UsersController@admin')-
>name('users.admin'); //->middleware('admin');
Route::get('/users/notadmin/{id}', 'UsersController@notAdmin')-
>name('users.not.admin');
Route::get('/users/create', 'UsersController@create')-
>name('users.create');
Route::post('/users/store', 'UsersController@store')-
>name('users.store');

~ 106 ~
Route::get('/users/delete/{id}', 'UsersController@destroy')-
>name('users.delete');

//route for user profile


Route::get('/users/profile', 'ProfilesController@index')-
>name('users.profile');
Route::post('/users/profile/update', 'ProfilesController@update')-
>name('users.profile.update');
Route::get('/users/profile/create', 'ProfilesController@create')-
>name('users.profile.create');
//route for Settings
Route::get('/settings', 'SettingsController@index')-
>name('settings');
Route::post('/settings/update', 'SettingsController@update')-
>name('settings.update');

//route for User front end


Route::get('/', 'siteUIcontroller@index')->name('index');
Route::get('/category/{id}', 'siteUIcontroller@category')-
>name('category.show');
Route::get('/tag/{id}', 'siteUIcontroller@tag')-
>name('tag.show');

//route for admin dashboard


Route::get('/dashboard', 'HomeController@dashboard')-
>name('dashboard');

});

:‫فيظهر لنا كما موضح بالصورة‬

~ 107 ~
~ 108 ~
Laravel-Header

header ‫ نبدا أوال بعمل‬HoursProject‫لكي نقوم بعمل المشروع السابق وهو‬


platformiq/resources/views/include‫فنقوم بعمل ملف‬
header.blade.php‫ونعمل بداخله ملف‬
:‫ونكتب بداخله الكود التالي‬

<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Callie HTML Template</title>
<link
href="https://fonts.googleapis.com/css?family=Montserrat:400,700%7CMu
li:400,700" rel="stylesheet">
<link type="text/css" rel="stylesheet"
href="{{asset('css/bootstrap.min.css')}}" />
<link rel="stylesheet" href=" {{asset('css/font-awesome.min.css')
}}">
<link type="text/css" rel="stylesheet"
href="{{asset('css/style.css')}}" />
</head>
<body>
<header id="header">
<div id="nav">
<div id="nav-top">
<div class="container">
<ul class="nav-social">
<li><a href="/"><i ></i> <h4>{{$blog_name}}</h4> </a></li>
<li><a href="#"><i class="fa fa-facebook"></i></a></li>
<li><a href="#"><i class="fa fa-twitter"></i></a></li>
<li><a href="#"><i class="fa fa-google-plus"></i></a></li>
<li><a href="#"><i class="fa fa-instagram"></i></a></li>
</ul>
<div class="nav-btns">
<button class="aside-btn"><i class="fa fa-bars"></i></button>
<button class="search-btn"><i class="fa fa-search"></i></button>
<div id="nav-search">
<form method="GET" action="/results">
{{ csrf_field()}}
<input class="input" name="search" placeholder="Enter your
search...">
</form>
<button class="nav-close search-close">
<span></span>
</button>
</div>
</div>
</div>
</div>
<div id="nav-bottom">
<div class="container">
<ul class="nav-menu">

~ 109 ~
@foreach ($categories as $category)
<li><a href=""></a></li>
@endforeach
</ul>
</div>
</div>
<div id="nav-aside">
<ul class="nav-aside-menu">
<li><a href="{{ url('/') }}">Home</a></li>
<li class="has-dropdown"><a>Categories</a>
<ul class="dropdown">
@foreach ($categories as $category)
<li><a href="#">{{$category->name}}</a></li>
@endforeach
</ul>
</li>
<li><a href="about.html">About Us</a></li>
<li><a href="contact.html">Contacts</a></li>
<li><a href="#">Advertise</a></li>
</ul>
<button class="nav-close nav-aside-close"><span></span></button>
</div>
</div>
</header>

php artisan make:controller siteUIcontroller :‫ونكتب االمر التالي‬


controolers ‫ في ملف‬sitecontroller ‫سوف يقوم بعمل ملف‬
:‫ونكتب فيه الكود التالي‬
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Setting;
use App\category;
class siteUIcontroller extends Controller
{

public function index()


{
return view('index')->with('blog_name' , Setting::first()->blog_name)
->with('categories' , Category::take(5)->get() )

->with('tag' , $tag ) ;

}
->with('first_post' , Post::orderBy('created_at','desc')->first())

~ 110 ~
‫فعند الذهاب الى صفحة ‪ home‬ونضغط على اسم ‪ RahmaAltaee‬سوف تحولنا الى‬
‫صفحة الموقع كما في الصورة‪:‬‬

‫او ندخل الى الموقع بطريقة اخر عن طريق نسخ هذا الرابط‪:‬‬
‫‪ http://localhost:8000/‬ونسخة على ‪ google chrome‬مثال‬

‫فيظهر لنا الموقع وال‪ header‬الذي قمنا بعمله كما في الصورة‪:‬‬

‫هذه األسماء هي ‪ tags‬التي قمنا بدخالها في صفحة ‪ createtags‬وهنا قمنا باسترجاعها من‬
‫قاعدة البيانات الى ‪header‬‬

‫اما اسم الشروع ‪ HoursProject‬هو أيضا قمنا باسترجاعة من قاعدة البيانات من‬
‫جدول ‪settings‬‬

‫وأيضا قمنا بعمل قائمة منسدلة في ‪ header‬واسترجاع جميع ‪ categories‬التي قمنا‬


‫بادخالها في صفحة ‪createcategories‬‬

‫~ ‪~ 111‬‬
‫فعند الضغط على هذه االيقونة‬

‫تظهر كما في الصورة‪:‬‬

‫~ ‪~ 112‬‬
Laravel-Index

index.blade.php ‫ فنعمل ملف‬user‫نقوم بعمل واجهة المشروع وعرضه لل‬


platformiq/resources/views‫في داخل ملف‬
:‫الكود التالي‬
@include('include.header')
<div class="section">
<div class="container">
<div id="hot-post" class="row hot-post">
<div class="col-md-8 hot-post-left">
<div class="post post-thumb">
<a class="post-img" href="{{route('post.show', ['slug' =>
$first_post->slug])}}"><img src="{{$first_post->featrued}}"
alt=""></a>
<div class="post-body">
<div class="post-category">
<a href="{{route('category.show', ['id' => $first_post->category-
>id])}}">{{$first_post->category->name}}</a>
</div>
<h3 class="post-title title-lg"><a href="#">{{$first_post-
>title}}</a></h3>
<ul class="post-meta">
<li><a href="#">John Doe</a></li>
<li>{{$first_post->created_at->diffForHumans()}}</li>
</ul>
</div>
</div>
</div>
<div class="col-md-4 hot-post-right">
<div class="post post-thumb">
<a class="post-img" href="{{route('post.show', ['slug' =>
$second_post->slug])}}"><img src="{{$second_post->featrued}}"
alt=""></a>
<div class="post-body">
<div class="post-category">
<a href="{{route('category.show', ['id' => $second_post->category-
>id])}}">{{$second_post->category->name}}</a>
</div>
<h3 class="post-title"><a href="#">{{$second_post->title}}</a></h3>
<ul class="post-meta">
<li><a href="author.html">John Doe</a></li>
<li>{{$second_post->created_at->diffForHumans()}}</li>
</ul>
</div>
</div>
<div class="post post-thumb">
<a class="post-img" href="{{route('post.show', ['slug' =>
$third_post->slug])}}"><img src="{{$third_post->featrued}}"
alt=""></a>
<div class="post-body">
<div class="post-category">
<a href="{{route('category.show', ['id' => $third_post->category-
>id])}}">{{$third_post->category->name}}</a>
</div>

~ 113 ~
<h3 class="post-title"><a href="blog-post.html">{{$third_post-
>title}}</a></h3>
<ul class="post-meta">
<li><a href="author.html">John Doe</a></li>
<li>{{$third_post->created_at->diffForHumans()}}</li>
</ul>
</div>
</div>
</div>
</div>
</div>
<div class="section">
<div class="container">
<div class="row">
<div class="col-md-8">
<div class="row">
<div class="col-md-12">
<div class="section-title">
<h2 class="title">Recent posts</h2>
</div>
</div>
<!-- post -->
<div class="col-md-6">
<div class="post">
<a class="post-img" href="blog-post.html"><img src="{{$first_post-
>featrued}}" alt=""></a>
<div class="post-body">
<div class="post-category">
<a href="category.html">{{$first_post->category->name}}</a>
</div>
<h3 class="post-title"><a href="blog-post.html">{{$first_post-
>title}}</a></h3>
<ul class="post-meta">
<li><a href="author.html">John Doe</a></li>
<li>{{$first_post->created_at->diffForHumans()}}</li>
</ul>
</div>
</div>
</div>
<!-- /post -->

<div class="col-md-6">
<div class="post">
<a class="post-img" href="blog-post.html"><img src="{{$second_post-
>featrued}}" alt=""></a>
<div class="post-body">
<div class="post-category">
<a href="category.html">{{$second_post->category->name}}</a>

</div>
<h3 class="post-title"><a href="blog-post.html">{{$second_post-
>title}}</a></h3>
<ul class="post-meta">
<li><a href="author.html">John Doe</a></li>
<li>{{$second_post->created_at->diffForHumans()}}</li>
</ul>
</div>
</div>
</div>
<div class="clearfix visible-md visible-lg"></div>
<div class="col-md-6">

~ 114 ~
<div class="post">
<a class="post-img" href="blog-post.html"><img src="{{$third_post-
>featrued}}" alt=""></a>
<div class="post-body">
<div class="post-category">
<a href="category.html">{{$third_post->category->name}}</a>
</div>
<h3 class="post-title"><a href="blog-post.html">{{$third_post-
>title}}</a></h3>
<ul class="post-meta">
<li><a href="author.html">John Doe</a></li>
<li>{{$third_post->created_at->diffForHumans()}}</li>
</ul>
</div>
</div>
</div>
<div class="col-md-6">
<div class="post">
<a class="post-img" href="blog-post.html"><img src="{{$fourth_post-
>featrued}}" alt=""></a>
<div class="post-body">
<div class="post-category">
<a href="category.html">{{$fourth_post->category->name}}</a>

</div>
<h3 class="post-title"><a href="blog-post.html">{{$fourth_post-
>title}}</a></h3>
<ul class="post-meta">
<li><a href="author.html">John Doe</a></li>
<li>{{$fourth_post->created_at->diffForHumans()}}</li>
</ul>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-12">
<div class="section-title">
<h2 class="title">{{$ruby_on_rails->name}}</h2>
</div>
</div>
@foreach ($ruby_on_rails->posts()->orderBy('created_at','desc')-
>take(3)->get() as $post)
<div class="col-md-4">
<div class="post post-sm">
<a class="post-img" href="blog-post.html"><img src="{{$post-
>featrued}}" alt=""></a>
<div class="post-body">
<div class="post-category">
<a href="category.html">{{$post->category->name}}</a>
</div>
<h3 class="post-title title-sm"><a href="blog-post.html">{{$post-
>title}}</a></h3>
<ul class="post-meta">
<li><a href="author.html">John Doe</a></li>
<li>{{$post->created_at->diffForHumans()}}</li>
</ul>
</div>
</div>
</div>
@endforeach

~ 115 ~
</div>
<div class="row">
<div class="col-md-12">
<div class="section-title">
<h2 class="title">{{$Rolex->name}}</h2>
</div>
</div>
<!-- post -->
@foreach ($Rolex->posts()->orderBy('created_at','desc')->take(3)-
>get() as $post)
<div class="col-md-4">
<div class="post post-sm">
<a class="post-img" href="blog-post.html"><img src="{{$post-
>featrued}}" alt=""></a>
<div class="post-body">
<div class="post-category">
<a href="category.html">{{$post->category->name}}</a>
</div>
<h3 class="post-title title-sm"><a href="blog-post.html">{{$post-
>title}}</a></h3>
<ul class="post-meta">
<li><a href="author.html">John Doe</a></li>
<li>{{$post->created_at->diffForHumans()}}</li>
</ul>
</div>
</div>
</div>
@endforeach
</div>
<div class="row">
<div class="col-md-12">
<div class="section-title">
<h2 class="title">{{$Omega->name}}</h2>
</div>
</div>
@foreach ($Omega->posts()->orderBy('created_at','desc')->take(3)-
>get() as $post)
<div class="col-md-4">
<div class="post post-sm">
<a class="post-img" href="blog-post.html"><img src="{{$post-
>featrued}}" alt=""></a>
<div class="post-body">
<div class="post-category">
<a href="category.html">{{$post->category->name}}</a>
</div>
<h3 class="post-title title-sm"><a href="blog-post.html">{{$post-
>title}}</a></h3>
<ul class="post-meta">
<li><a href="author.html">John Doe</a></li>
<li>{{$post->created_at->diffForHumans()}}</li>
</ul>
</div>
</div>
</div>
@endforeach
</div>
</div>
<div class="col-md-4">
<div class="aside-widget text-center">
<a href="#" style="display: inline-block;margin: auto;">
<img class="img-responsive" src="./img/ad-3.jpg" alt="">

~ 116 ~
</a>
</div>
<div class="aside-widget">
<div class="section-title">
<h2 class="title">Social Media</h2>
</div>
<div class="social-widget">
<ul>
<li>
<a href="#" class="social-facebook">
<i class="fa fa-facebook"></i>
<span>21.2K<br>Followers</span>
</a>
</li>
<li>
<a href="#" class="social-twitter">
<i class="fa fa-twitter"></i>
<span>10.2K<br>Followers</span>
</a>
</li>
<li>
<a href="#" class="social-google-plus">
<i class="fa fa-google-plus"></i>
<span>5K<br>Followers</span>
</a>
</li>
</ul>
</div>
</div>
<div class="aside-widget">
<div class="section-title">
<h2 class="title">Categories</h2>
</div>
<div class="category-widget">
<ul>
@foreach ($categories as $category)
<li><a href="#">{{$category->name}} <span>451</span></a></li>
@endforeach
</ul>
</div>
</div>
<div class="aside-widget">
<div class="section-title">
<h2 class="title">Newsletter</h2>
</div>
<div class="newsletter-widget">
<form>
<p>Nec feugiat nisl pretium fusce id velit ut tortor pretium.</p>
<input class="input" name="newsletter" placeholder="Enter Your
Email">
<button class="primary-button">Subscribe</button>
</form>
</div>
</div>
<div class="aside-widget">
<div class="section-title">
<h2 class="title">Popular Posts</h2>
</div>
</div>
</div>
</div>

~ 117 ~
</div>
</div>
<div class="section-row loadmore text-center">
<a href="#" class="primary-button">Load More</a>
</div>
@include('include.footer')
<script src="js/jquery.min.js"></script>
<script src="js/bootstrap.min.js"></script>
<script src="js/jquery.stellar.min.js"></script>
<script src="js/main.js"></script>

</body>

</html>

:‫ ونكتب فيه الكود التالي‬siteUIcontroller ‫ثم نذهب الى ملف‬


<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Setting;
use App\category;
use App\Tag;
use App\Post;
class siteUIcontroller extends Controller
{

public function index()


{
return view('index')->with('blog_name' , Setting::first()->blog_name)
->with('categories' , Category::take(5)->get() )
->with('tags' , Tag::take(5)->get() )
->with('first_post' , Post::orderBy('created_at','desc')->first())
->with('second_post' , Post::orderBy('created_at','desc')->skip(1)-
>take(1)->get()->first())
->with('third_post' , Post::orderBy('created_at','desc')->skip(2)-
>take(1)->get()->first())
->with('fourth_post' , Post::orderBy('created_at','desc')->skip(3)-
>take(1)->get()->first())
->with('Rolex', Category::find(1) )
->with('settings', Setting::first() )
->with('Omega', Category::find(5) )
;

}
}

~ 118 ~
‫فيقوم باسترجاع البيانات من قاعدة البيانات الى الصفحة الرئيسية كما في الصورة‪:‬‬

‫~ ‪~ 119‬‬
Laravel-Footer

include ‫ داخل ملف‬footer.blade.php ‫نقوم بعمل ملف‬


:‫ونكتب فيه الكود التالي‬
<footer id="footer">
<div class="container">
<div class="row">
<div class="col-md-3">
<div class="footer-widget">

<p>{{$settings->blog_name}} {{$settings->phone_number}}

{{$settings->address}}
</p>
<ul class="contact-social">
<li><a href="#" class="social-facebook"><i class="fa fa-
facebook"></i></a></li>
<li><a href="#" class="social-twitter"><i class="fa fa-
twitter"></i></a></li>
<li><a href="#" class="social-google-plus"><i class="fa fa-google-
plus"></i></a></li>
<li><a href="#" class="social-instagram"><i class="fa fa-
instagram"></i></a></li>
</ul>
</div>
</div>
<div class="col-md-3">
<div class="footer-widget">
<h3 class="footer-title">Categories</h3>
<div class="category-widget">
<ul>
@foreach ($categories as $category)
<li><a href="#">{{$category->name}} <span>451</span></a></li>
@endforeach
</ul>
</div>
</div>
</div>
<div class="col-md-3">
<div class="footer-widget">
<h3 class="footer-title">Tags</h3>
<div class="tags-widget">
<ul>

@foreach ($tags as $tag)


<li><a href="#">{{$tag->tag}} </a></li>
@endforeach
</ul></div>
</div>
</div>
<div class="col-md-3">
<div class="footer-widget">
<h3 class="footer-title">Newsletter</h3>
<div class="newsletter-widget">

~ 120 ~
<form>
<p>Nec feugiat nisl pretium fusce id velit ut tortor pretium.</p>
<input class="input" name="newsletter" placeholder="Enter Your
Email">
<button class="primary-button">Subscribe</button>
</form>
</div>
</div>
</div>
</div>
<div class="footer-bottom row">
<div class="col-md-6 col-md-push-6">
<ul class="footer-nav">
<li><a href="index.html">Home</a></li>
<li><a href="about.html">About Us</a></li>
<li><a href="contact.html">Contacts</a></li>
<li><a href="#">Advertise</a></li>
<li><a href="#">Privacy</a></li>
</ul>
</div>
<div class="col-md-6 col-md-pull-6">
<div class="footer-copyright">
Copyright &copy;
<script>document.write(new Date().getFullYear());</script>
All rights reserved | This template is made with
<i class="fa fa-heart-o" aria-hidden="true"></i> by
<a href="https://colorlib.com" target="_blank">Rahma Altaee</a>
</div>
</div>
</div>
</div>
</footer>

‫ كما في الصورة‬footer ‫فيظهر‬

~ 121 ~
Laravel-Category

‫ وتعطينا‬category ‫ فسوف تحولنا الى صفحة‬index ‫االن عند الضغط على الصورة في‬
: ‫تفاصيل الصورة‬
siteUIcontroller.php‫فنكتب الكود التالي داخل ملف‬
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Setting;
use App\category;
use App\Tag;
use App\Post;
class siteUIcontroller extends Controller
{

public function index()


{
return view('index')->with('blog_name' , Setting::first()->blog_name)
->with('categories' , Category::take(5)->get() )
->with('tags' , Tag::take(5)->get() )
->with('first_post' , Post::orderBy('created_at','desc')->first())
->with('second_post' , Post::orderBy('created_at','desc')->skip(1)-
>take(1)->get()->first())
->with('third_post' , Post::orderBy('created_at','desc')->skip(2)-
>take(1)->get()->first())
->with('fourth_post' , Post::orderBy('created_at','desc')->skip(3)-
>take(1)->get()->first())
->with('Rolex', Category::find(1) )
->with('settings', Setting::first() )
->with('Omega', Category::find(5) )
;

public function showPost($slug)


{

$post = Post::where('slug' , $slug)->first();


$next_page = Post::where('id' , '>' ,$post->id)->min('id');
$prev_page = Post::where('id' , '<' ,$post->id)->max('id');

return view('posts.show')

->with('tags' , Tag::all() )
->with('post' , $post)
->with('next' , Post::find($next_page))
->with('prev' , Post::find($prev_page))
->with('title' , $post->title)
->with('blog_name' , Setting::first()->blog_name)
->with('settings', Setting::first() )
->with('categories' , Category::take(5)->get() ) ;

~ 122 ~
}

public function category($id)


{

$category = Category::find($id) ;

return view('categories.category')
->with('tags' , Tag::all() )
->with('title' , $category->name)
->with('categories' , Category::take(5)->get() )
->with('blog_name' , Setting::first()->blog_name)
->with('settings', Setting::first() )
->with('name' , $category->name )
->with('category' , $category ) ;

}
}

:‫ ونكتب فيه الكود التالي‬layouts ‫ داخل ملف‬front.blade.php ‫ثم نعمل صفحة‬

@include('include.header')
<div class="page-header">
<div class="page-header-bg" style="background-image: url('{{$post-
>featrued}}');" data-stellar-background-ratio="0.5" ></div>
<div class="container">
<div class="row">
<div class="col-md-offset-1 col-md-10 text-center">
<h1 class="text-uppercase">{{$title}}</h1>
<p class="lead">{{$post->category->name}}</p>
</div>
</div>
</div>
</div>
</header>
<div class="section">
<div class="container">
<div class="row">
<div class="col-md-8">
<div class="section-row">
<div class="section-title">
<h3 class="title">{{$title}}</h3>
</div>

<h1>{{$post->created_at->toFormattedDateString()}}</h1>
<p>{!! $post->content !!}</p>
@foreach ($post->tags as $tag)
<a href="#" class="badge badge-pill badge-danger"
style="background-color:#ff0a0a">{{$tag->tag}}</a>
@endforeach
</div>

<div class="section-row">
<div class="section-title">
</div>
<br>
@if($prev)

~ 123 ~
<a href="{{route('post.show', ['slug' => $prev->slug])}}"
class="badge badge-dange"> next=>{{$prev->title}} </a>
@endif()
@if ($next)
<a href="{{route('post.show', ['slug' => $next->slug])}}"
class="badge badge-"> prev=>{{$next->title}} </a>
@endif

</div>

<div class="section-row">
<div class="section-title">

<h3 class="title">AllTags</h3>
</div>
<br>
@foreach($tags as $tag)
<a href="{{route('tag.show', ['id' => $tag->id])}}" class="badge
badge-pill badge-danger"
style="background-color: #ee4266;">{{ $tag->tag }}</a>
@endforeach
</div>
@include('include.disqus')
</div>
<div class="col-md-4">
<div class="aside-widget">
<div class="section-title">
<h2 class="title">Social Media</h2>
</div>
<div class="social-widget">
<ul>
<li>
<a href="#" class="social-facebook">
<i class="fa fa-facebook"></i>
<span>21.2K<br>Followers</span>
</a>
</li>
<li>
<a href="#" class="social-twitter">
<i class="fa fa-twitter"></i>
<span>10.2K<br>Followers</span>
</a>
</li>
<li>
<a href="#" class="social-google-plus">
<i class="fa fa-google-plus"></i>
<span>5K<br>Followers</span>
</a>
</li>
</ul>
</div>
</div>
<div class="aside-widget">
<div class="section-title">
<h2 class="title">Newsletter</h2>
</div>
<div class="newsletter-widget">
<form>
<p>Nec feugiat nisl pretium fusce id velit ut tortor pretium.</p>
<input class="input" name="newsletter" placeholder="Enter Your
Email">

~ 124 ~
<button class="primary-button">Subscribe</button>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
@include('include.footer')
<script src="js/jquery.min.js"></script>
<script src="js/bootstrap.min.js"></script>
<script src="js/jquery.stellar.min.js"></script>
<script src="js/main.js"></script>

</body>

</html>
:‫ ونكتب فيه الكود التالي‬include ‫ داخل ملف‬disqus.blade.php ‫وملف‬
<div id="disqus_thread"></div>
<script>
https://disqus.com/admin/universalcode/#configuration-variables*/
(function() { // DON'T EDIT BELOW THIS LINE
var d = document, s = d.createElement('script');
s.src = 'https://fedora-linux-blog.disqus.com/embed.js';
s.setAttribute('data-timestamp', +new Date());
(d.head || d.body).appendChild(s);
})();
</script>
<noscript>Please enable JavaScript to view the <a
href="https://disqus.com/?ref_noscript">comments powered by
Disqus.</a></noscript>

:‫ ونكتب فيه الكود التالي‬web.php ‫وملف‬


<?php

Auth::routes();

Auth::routes(['verify' => true]);


Route::get('/home', 'HomeController@index')->name('home');

//Route::group(['prefix' => 'user', 'middleware'=>'auth'], function


() {
Route::group([ 'middleware'=>'auth'], function () {

//route for posts


Route::get('/posts', 'PostsController@index')->name('posts');
Route::get('/post/trashed', 'PostsController@trashed')-
>name('post.trashed');
Route::get('/post/hdelete/{id}', 'PostsController@hdelete')-
>name('post.hdelete');
Route::get('/post/restore/{id}', 'PostsController@restore')-
>name('post.restore');
Route::get('/post/edit/{id}', 'PostsController@edit')-
>name('post.edit');
Route::post('/post/update/{id}', 'PostsController@update')-
>name('post.update');

~ 125 ~
Route::get('/post/create', 'PostsController@create')-
>name('post.create');
Route::post('/post/store', 'PostsController@store')-
>name('post.store');
Route::get('/post/delete/{id}', 'postsController@destroy')-
>name('post.delete');

//route for Categorie


Route::get('/categories', 'CategoriesController@index')-
>name('categories');
Route::get('/category/edit/{id}', 'CategoriesController@edit')-
>name('category.edit');
Route::get('/category/delete/{id}', 'CategoriesController@destroy')-
>name('category.delete');
Route::get('/category/create', 'CategoriesController@create')-
>name('category.create');
Route::post('/category/store', 'CategoriesController@store')-
>name('category.store');
Route::post('/category/update/{id}', 'CategoriesController@update')-
>name('category.update');

//route for Tag


Route::get('/tags', 'TagController@index')->name('tags');
Route::get('/tag/edit/{id}', 'TagController@edit')-
>name('tag.edit');
Route::get('/tag/delete/{id}', 'TagController@destroy')-
>name('tag.delete');
Route::get('/tag/create', 'TagController@create')-
>name('tag.create');
Route::post('/tag/store', 'TagController@store')-
>name('tag.store');
Route::post('/tag/update/{id}', 'TagController@update')-
>name('tag.update');

//route for users


Route::get('/users', 'UsersController@index')->name('users');
Route::get('/users/admin/{id}', 'UsersController@admin')-
>name('users.admin'); //->middleware('admin');
Route::get('/users/notadmin/{id}', 'UsersController@notAdmin')-
>name('users.not.admin');
Route::get('/users/create', 'UsersController@create')-
>name('users.create');
Route::post('/users/store', 'UsersController@store')-
>name('users.store');
Route::get('/users/delete/{id}', 'UsersController@destroy')-
>name('users.delete');

//route for user profile


Route::get('/users/profile', 'ProfilesController@index')-
>name('users.profile');
Route::post('/users/profile/update', 'ProfilesController@update')-
>name('users.profile.update');
Route::get('/users/profile/create', 'ProfilesController@create')-
>name('users.profile.create');

//route for Settings


Route::get('/settings', 'SettingsController@index')-
>name('settings');

~ 126 ~
Route::post('/settings/update', 'SettingsController@update')-
>name('settings.update');

//route for User front end


Route::get('/', 'siteUIcontroller@index')->name('index');
Route::get('/category/{id}', 'siteUIcontroller@category')-
>name('category.show');
Route::get('/tag/{id}', 'siteUIcontroller@tag')-
>name('tag.show');

//route for admin dashboard


Route::get('/dashboard', 'HomeController@dashboard')-
>name('dashboard');
Route::get('/{slug}', 'siteUIcontroller@showPost')-
>name('post.show');
});
‫ للصورة نفسها‬category ‫فعند الضغط على هذه الصورة تذهب الى‬

~ 127 ~
‫والصورة الثانية أيضا عند الضغط عليها يظهر ‪ category‬كما في الصورة‪:‬‬

‫فعند الضغط على ‪ next,prev‬سوف يحولنا الى ‪ category‬التي بعدها او التي قبلها وهكذا‬

‫~ ‪~ 128‬‬
Laravel-Tag

‫ وتعطينا‬Tag ‫ فسوف تحولنا الى صفحة‬index ‫االن عند الضغط على اسم الصورة في‬
:tag‫تفاصيل ال‬
siteUIcontroller.php‫فنكتب الكود التالي داخل ملف‬
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Setting;
use App\category;
use App\Tag;
use App\Post;
class siteUIcontroller extends Controller
{

public function index()


{
return view('index')->with('blog_name' , Setting::first()->blog_name)
->with('categories' , Category::take(5)->get() )
->with('tags' , Tag::take(5)->get() )
->with('first_post' , Post::orderBy('created_at','desc')->first())
->with('second_post' , Post::orderBy('created_at','desc')->skip(1)-
>take(1)->get()->first())
->with('third_post' , Post::orderBy('created_at','desc')->skip(2)-
>take(1)->get()->first())
->with('fourth_post' , Post::orderBy('created_at','desc')->skip(3)-
>take(1)->get()->first())
->with('Rolex', Category::find(1) )
->with('settings', Setting::first() )
->with('Omega', Category::find(5) )
;

public function showPost($slug)


{

$post = Post::where('slug' , $slug)->first();


$next_page = Post::where('id' , '>' ,$post->id)->min('id');
$prev_page = Post::where('id' , '<' ,$post->id)->max('id');

return view('posts.show')

->with('tags' , Tag::all() )
->with('post' , $post)
->with('next' , Post::find($next_page))
->with('prev' , Post::find($prev_page))
->with('title' , $post->title)
->with('blog_name' , Setting::first()->blog_name)
->with('settings', Setting::first() )

~ 129 ~
->with('categories' , Category::take(5)->get() ) ;

public function category($id)


{

$category = Category::find($id) ;

return view('categories.category')
->with('tags' , Tag::all() )
->with('title' , $category->name)
->with('categories' , Category::take(5)->get() )
->with('blog_name' , Setting::first()->blog_name)
->with('settings', Setting::first() )
->with('name' , $category->name )
->with('category' , $category ) ;

public function tag($id)


{

$tag = Tag::find($id) ;

return view('tags.tags')

->with('title' , $tag->tag)
->with('categories' , Category::take(5)->get() )
->with('blog_name' , Setting::first()->blog_name)
->with('settings', Setting::first() )
->with('name' , $tag->name )

->with('tag' , $tag ) ;

}
:‫ ونضيف فيه الكود التالي‬index.blade.php‫ملف‬
@include('include.header')
<div class="section">
<div class="container">
<div id="hot-post" class="row hot-post">
<div class="col-md-8 hot-post-left">
<div class="post post-thumb">
<a class="post-img" href="{{route('post.show', ['slug' =>
$first_post->slug])}}"><img src="{{$first_post->featrued}}"
alt=""></a>
<div class="post-body">
<div class="post-category">
<a href="{{route('category.show', ['id' => $first_post->category-
>id])}}">{{$first_post->category->name}}</a>
</div>
<h3 class="post-title title-lg"><a href="#">{{$first_post-
>title}}</a></h3>
<ul class="post-meta">
<li><a href="#">John Doe</a></li>
<li>{{$first_post->created_at->diffForHumans()}}</li>

~ 130 ~
</ul>
</div>
</div>
</div>
<div class="col-md-4 hot-post-right">
<div class="post post-thumb">
<a class="post-img" href="{{route('post.show', ['slug' =>
$second_post->slug])}}"><img src="{{$second_post->featrued}}"
alt=""></a>
<div class="post-body">
<div class="post-category">
<a href="{{route('category.show', ['id' => $second_post->category-
>id])}}">{{$second_post->category->name}}</a>
</div>
<h3 class="post-title"><a href="#">{{$second_post->title}}</a></h3>
<ul class="post-meta">
<li><a href="author.html">John Doe</a></li>
<li>{{$second_post->created_at->diffForHumans()}}</li>
</ul>
</div>
</div>
<div class="post post-thumb">
<a class="post-img" href="{{route('post.show', ['slug' =>
$third_post->slug])}}"><img src="{{$third_post->featrued}}"
alt=""></a>
<div class="post-body">
<div class="post-category">
<a href="{{route('category.show', ['id' => $third_post->category-
>id])}}">{{$third_post->category->name}}</a>
</div>
<h3 class="post-title"><a href="blog-post.html">{{$third_post-
>title}}</a></h3>
<ul class="post-meta">
<li><a href="author.html">John Doe</a></li>
<li>{{$third_post->created_at->diffForHumans()}}</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="section">
<div class="container">
<div class="row">
<div class="col-md-8">
<div class="row">
<div class="col-md-12">
<div class="section-title">
<h2 class="title">Recent posts</h2>
</div>
</div>
<div class="col-md-6">
<div class="post">
<a class="post-img" href="blog-post.html"><img src="{{$first_post-
>featrued}}" alt=""></a>
<div class="post-body">
<div class="post-category">
<a href="category.html">{{$first_post->category->name}}</a>
</div>

~ 131 ~
<h3 class="post-title"><a href="blog-post.html">{{$first_post-
>title}}</a></h3>
<ul class="post-meta">
<li><a href="author.html">John Doe</a></li>
<li>{{$first_post->created_at->diffForHumans()}}</li>
</ul>
</div>
</div>
</div>
<div class="col-md-6">
<div class="post">
<a class="post-img" href="blog-post.html"><img src="{{$second_post-
>featrued}}" alt=""></a>
<div class="post-body">
<div class="post-category">
<a href="category.html">{{$second_post->category->name}}</a>

</div>
<h3 class="post-title"><a href="blog-post.html">{{$second_post-
>title}}</a></h3>
<ul class="post-meta">
<li><a href="author.html">John Doe</a></li>
<li>{{$second_post->created_at->diffForHumans()}}</li>
</ul>
</div>
</div>
</div>
<div class="clearfix visible-md visible-lg"></div>
<div class="col-md-6">
<div class="post">
<a class="post-img" href="blog-post.html"><img src="{{$third_post-
>featrued}}" alt=""></a>
<div class="post-body">
<div class="post-category">
<a href="category.html">{{$third_post->category->name}}</a>
</div>
<h3 class="post-title"><a href="blog-post.html">{{$third_post-
>title}}</a></h3>
<ul class="post-meta">
<li><a href="author.html">John Doe</a></li>
<li>{{$third_post->created_at->diffForHumans()}}</li>
</ul>
</div>
</div>
</div>
<div class="col-md-6">
<div class="post">
<a class="post-img" href="blog-post.html"><img src="{{$fourth_post-
>featrued}}" alt=""></a>
<div class="post-body">
<div class="post-category">
<a href="category.html">{{$fourth_post->category->name}}</a>

</div>
<h3 class="post-title"><a href="blog-post.html">{{$fourth_post-
>title}}</a></h3>
<ul class="post-meta">
<li><a href="author.html">John Doe</a></li>
<li>{{$fourth_post->created_at->diffForHumans()}}</li>
</ul>
</div>

~ 132 ~
</div>
</div>
</div>
<div class="row">
<div class="col-md-12">
<div class="section-title">
<h2 class="title">{{$ruby_on_rails->name}}</h2>
</div>
</div>
@foreach ($ruby_on_rails->posts()->orderBy('created_at','desc')-
>take(3)->get() as $post)
<div class="col-md-4">
<div class="post post-sm">
<a class="post-img" href="blog-post.html"><img src="{{$post-
>featrued}}" alt=""></a>
<div class="post-body">
<div class="post-category">
<a href="category.html">{{$post->category->name}}</a>
</div>
<h3 class="post-title title-sm"><a href="blog-post.html">{{$post-
>title}}</a></h3>
<ul class="post-meta">
<li><a href="author.html">John Doe</a></li>
<li>{{$post->created_at->diffForHumans()}}</li>
</ul>
</div>
</div>
</div>
@endforeach
</div>
<div class="row">
<div class="col-md-12">
<div class="section-title">
<h2 class="title">{{$Rolex->name}}</h2>
</div>
</div>
@foreach ($Rolex->posts()->orderBy('created_at','desc')->take(3)-
>get() as $post)
<div class="col-md-4">
<div class="post post-sm">
<a class="post-img" href="blog-post.html"><img src="{{$post-
>featrued}}" alt=""></a>
<div class="post-body">
<div class="post-category">
<a href="category.html">{{$post->category->name}}</a>
</div>
<h3 class="post-title title-sm"><a href="blog-post.html">{{$post-
>title}}</a></h3>
<ul class="post-meta">
<li><a href="author.html">John Doe</a></li>
<li>{{$post->created_at->diffForHumans()}}</li>
</ul>
</div>
</div>
</div>
@endforeach
</div>
<div class="row">
<div class="col-md-12">
<div class="section-title">
<h2 class="title">{{$Omega->name}}</h2>

~ 133 ~
</div>
</div>
@foreach ($Omega->posts()->orderBy('created_at','desc')->take(3)-
>get() as $post)
<div class="col-md-4">
<div class="post post-sm">
<a class="post-img" href="blog-post.html"><img src="{{$post-
>featrued}}" alt=""></a>
<div class="post-body">
<div class="post-category">
<a href="category.html">{{$post->category->name}}</a>
</div>
<h3 class="post-title title-sm"><a href="blog-post.html">{{$post-
>title}}</a></h3>
<ul class="post-meta">
<li><a href="author.html">John Doe</a></li>
<li>{{$post->created_at->diffForHumans()}}</li>
</ul>
</div>
</div>
</div>
@endforeach
</div>
</div>
<div class="col-md-4">
<div class="aside-widget text-center">
<a href="#" style="display: inline-block;margin: auto;">
<img class="img-responsive" src="./img/ad-3.jpg" alt="">
</a>
</div>
<div class="aside-widget">
<div class="section-title">
<h2 class="title">Social Media</h2>
</div>
<div class="social-widget">
<ul>
<li>
<a href="#" class="social-facebook">
<i class="fa fa-facebook"></i>
<span>21.2K<br>Followers</span>
</a>
</li>
<li>
<a href="#" class="social-twitter">
<i class="fa fa-twitter"></i>
<span>10.2K<br>Followers</span>
</a>
</li>
<li>
<a href="#" class="social-google-plus">
<i class="fa fa-google-plus"></i>
<span>5K<br>Followers</span>
</a>
</li>
</ul>
</div>
</div>
<div class="aside-widget">
<div class="section-title">
<h2 class="title">Categories</h2>
</div>

~ 134 ~
<div class="category-widget">
<ul>
@foreach ($categories as $category)
<li><a href="#">{{$category->name}} <span>451</span></a></li>
@endforeach
</ul>
</div>
</div>
<div class="aside-widget">
<div class="section-title">
<h2 class="title">Newsletter</h2>
</div>
<div class="newsletter-widget">
<form>
<p>Nec feugiat nisl pretium fusce id velit ut tortor pretium.</p>
<input class="input" name="newsletter" placeholder="Enter Your
Email">
<button class="primary-button">Subscribe</button>
</form>
</div>
</div>
<div class="aside-widget">
<div class="section-title">
<h2 class="title">Popular Posts</h2>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="section-row loadmore text-center">
<a href="#" class="primary-button">Load More</a>
</div>
@include('include.footer')

<script src="js/jquery.min.js"></script>
<script src="js/bootstrap.min.js"></script>
<script src="js/jquery.stellar.min.js"></script>
<script src="js/main.js"></script>

</body>

</html>

views/tags‫ داخل ملف‬tags.blade.php‫ونعمل ملف‬

@include('include.header')
<div id="post-header" class="page-header">
<div class="page-header-bg" style="background-image:
url({{asset('./img/tagheuer3.jpg')}});" data-stellar-background-
ratio="0.5"></div>
<div class="container">
<div class="row">
<div class="col-md-10">
<div class="post-category">
<a href="category.html">{{$title}}</a>
</div>

~ 135 ~
<h1>Mel ut impetus suscipit tincidunt. Cum id ullum laboramus
persequeris.</h1>
<ul class="post-meta">
<li><a href="author.html">John Doe</a></li>
<li>{{$tag->created_at->toFormattedDateString()}}</li>
<li><i class="fa fa-comments"></i> 3</li>
<li><i class="fa fa-eye"></i> 807</li>
</ul>
</div>
</div>
</div>
</div>
<div class="section">
<div class="container">
<div class="row">
<div class="col-md-8">
<div class="post post-row">
<div class="post-body">
<div class="post-category">
</div>
<ul class="post-meta">
<li><a href="author.html">Tag: {{$tag->tag}}</a></li>
</ul>
</div>
</div>
@foreach ($tag->posts as $post)
<div class="post post-row">
<a class="post-img" href="{{route('post.show', ['slug' => $post-
>slug])}}"><img src="{{$post->featrued}}" alt=""></a>
<div class="post-body">
<div class="post-category">

<a href="{{route('post.show', ['slug' => $post->slug])}}">{{$post-


>title}}</a>
</div>
<h3 class="post-title"><a href="{{route('post.show', ['slug' =>
$post->slug])}}">{{$post->updated_at-
>toFormattedDateString()}}</a></h3>
<ul class="post-meta">
<li><a href="author.html">John Doe</a></li>
<li>{{$post->created_at->toFormattedDateString()}}</li>
</ul>
<p>{!!$post->content!!}</p>
</div>
</div>
@endforeach

<br>
<div class="section-row loadmore text-center">
<a href="#" class="primary-button">Load More</a>
</div>
</div>
<div class="col-md-4">
<div class="aside-widget">
<div class="section-title">
<h2 class="title">Social Media</h2>
</div>
<div class="social-widget">
<ul>
<li>
<a href="#" class="social-facebook">

~ 136 ~
<i class="fa fa-facebook"></i>
<span>21.2K<br>Followers</span>
</a>
</li>
<li>
<a href="#" class="social-twitter">
<i class="fa fa-twitter"></i>
<span>10.2K<br>Followers</span>
</a>
</li>
<li>
<a href="#" class="social-google-plus">
<i class="fa fa-google-plus"></i>
<span>5K<br>Followers</span>
</a>
</li>
</ul>
</div>
</div>
<div class="aside-widget">
<div class="section-title">
<h2 class="title">Categories</h2>
</div>
<div class="category-widget">
<ul>
<li><a href="#">Lifestyle <span>451</span></a></li>
<li><a href="#">Fashion <span>230</span></a></li>
<li><a href="#">Technology <span>40</span></a></li>
<li><a href="#">Travel <span>38</span></a></li>
<li><a href="#">Health <span>24</span></a></li>
</ul>
</div>
</div>
<div class="aside-widget">
<div class="section-title">
<h2 class="title">Newsletter</h2>
</div>
<div class="newsletter-widget">
<form>
<p>Nec feugiat nisl pretium fusce id velit ut tortor pretium.</p>
<input class="input" name="newsletter" placeholder="Enter Your
Email">
<button class="primary-button">Subscribe</button>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
<footer id="footer">
<div class="container">
<div class="row">
<div class="col-md-3">
<div class="footer-widget">
<div class="footer-logo">
<a href="index.html" class="logo"><img src="./img/logo-alt.png"
alt=""></a>
</div>
<p>Nec feugiat nisl pretium fusce id velit ut tortor pretium. Nisl
purus in mollis nunc sed. Nunc non blandit massa enim nec.</p>

~ 137 ~
<ul class="contact-social">
<li><a href="#" class="social-facebook"><i class="fa fa-
facebook"></i></a></li>
<li><a href="#" class="social-twitter"><i class="fa fa-
twitter"></i></a></li>
<li><a href="#" class="social-google-plus"><i class="fa fa-google-
plus"></i></a></li>
<li><a href="#" class="social-instagram"><i class="fa fa-
instagram"></i></a></li>
</ul>
</div>
</div>
<div class="col-md-3">
<div class="footer-widget">
<h3 class="footer-title">Categories</h3>
<div class="category-widget">
<ul>
<li><a href="#">Lifestyle <span>451</span></a></li>
<li><a href="#">Fashion <span>230</span></a></li>
<li><a href="#">Technology <span>40</span></a></li>
<li><a href="#">Travel <span>38</span></a></li>
<li><a href="#">Health <span>24</span></a></li>
</ul>
</div>
</div>
</div>
<div class="col-md-3">
<div class="footer-widget">
<h3 class="footer-title">Tags</h3>
<div class="tags-widget">
<ul>
<li><a href="#">Social</a></li>
<li><a href="#">Lifestyle</a></li>
<li><a href="#">Blog</a></li>
<li><a href="#">Travel</a></li>
<li><a href="#">Technology</a></li>
<li><a href="#">Fashion</a></li>
<li><a href="#">Life</a></li>
<li><a href="#">News</a></li>
<li><a href="#">Magazine</a></li>
<li><a href="#">Food</a></li>
<li><a href="#">Health</a></li>
</ul>
</div>
</div>
</div>
<div class="col-md-3">
<div class="footer-widget">
<h3 class="footer-title">Newsletter</h3>
<div class="newsletter-widget">
<form>
<p>Nec feugiat nisl pretium fusce id velit ut tortor pretium.</p>
<input class="input" name="newsletter" placeholder="Enter Your
Email">
<button class="primary-button">Subscribe</button>
</form>
</div>
</div>
</div>
</div>
<div class="footer-bottom row">

~ 138 ~
<div class="col-md-6 col-md-push-6">
<ul class="footer-nav">
<li><a href="index.html">Home</a></li>
<li><a href="about.html">About Us</a></li>
<li><a href="contact.html">Contacts</a></li>
<li><a href="#">Advertise</a></li>
<li><a href="#">Privacy</a></li>
</ul>
</div>
<div class="col-md-6 col-md-pull-6">
<div class="footer-copyright">
Copyright &copy;<script>document.write(new
Date().getFullYear());</script> All rights reserved | This template
is made with <i class="fa fa-heart-o" aria-hidden="true"></i> by <a
href="https://colorlib.com" target="_blank">RahmaAltaee</a>
</div>
</div>
</div>
</div>
</footer>
<script src="js/jquery.min.js"></script>
<script src="js/bootstrap.min.js"></script>
<script src="js/jquery.stellar.min.js"></script>
<script src="js/main.js"></script>
</body>
</html>

‫ لنفس‬tag ‫ وعند الضغط على أي واحدة منها سوف يحولنا الى صفحة‬tags‫فتظهر لنا كل ال‬
‫العنصر‬

~ 139 ~
‫عند الضغط على أي ‪ tag‬تظهركما في الصورة‪:‬‬

‫~ ‪~ 140‬‬
:‫ ونضيف فيها الكود التالي‬header.blade.php ‫ثم نذهب الى ملف‬

<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Callie HTML Template</title>

<link
href="https://fonts.googleapis.com/css?family=Montserrat:400,700%7CMu
li:400,700" rel="stylesheet">
<link type="text/css" rel="stylesheet"
href="{{asset('css/bootstrap.min.css')}}" />
<link rel="stylesheet" href=" {{asset('css/font-awesome.min.css')
}}">
<link type="text/css" rel="stylesheet"
href="{{asset('css/style.css')}}" />

</head>

<body>
<header id="header">
<div id="nav">
<div id="nav-top">
<div class="container">
<ul class="nav-social">
<li><a href="/"><i ></i> <h4>{{$blog_name}}</h4> </a></li>
<li><a href="#"><i class="fa fa-facebook"></i></a></li>
<li><a href="#"><i class="fa fa-twitter"></i></a></li>
<li><a href="#"><i class="fa fa-google-plus"></i></a></li>
<li><a href="#"><i class="fa fa-instagram"></i></a></li>
</ul>
<div class="nav-btns">
<button class="aside-btn"><i class="fa fa-bars"></i></button>
<button class="search-btn"><i class="fa fa-search"></i></button>
<div id="nav-search">
<form method="GET" action="/results">
{{ csrf_field()}}
<input class="input" name="search" placeholder="Enter your
search...">
</form>
<button class="nav-close search-close">
<span></span>
</button>
</div>
</div>
</div>
</div>
<div id="nav-bottom">

<div class="container">
<ul class="nav-menu">

@foreach ($categories as $category)


<li><a href="{{route('category.show', ['id' => $category-
>id])}}">{{$category->name}}</a></li>
@endforeach
</ul>

~ 141 ~
</div>
</div>
<div id="nav-aside">
<ul class="nav-aside-menu">
<li><a href="{{ url('/') }}">Home</a></li>
<li class="has-dropdown"><a>Categories</a>
<ul class="dropdown">
@foreach ($categories as $category)
<li><a href="#">{{$category->name}}</a></li>
@endforeach
</ul>
</li>
<li><a href="about.html">About Us</a></li>
<li><a href="contact.html">Contacts</a></li>
<li><a href="#">Advertise</a></li>
</ul>
<button class="nav-close nav-aside-close"><span></span></button>
</div>
</div>
</header>

‫ تظهر لنا هذه الصفحة‬header ‫ الموجود في‬category ‫وعند الضغط على أي‬

~ 142 ~
Laravel-AboutUs

resources/views ‫ في ملف‬about.html ‫نعمل صفحة‬


:‫ونكتب فيه الكود التالي‬

<link
href="https://fonts.googleapis.com/css?family=Montserrat:400,700%7CMu
li:400,700" rel="stylesheet">
<link type="text/css" rel="stylesheet" href="css/bootstrap.min.css"
/>
<link rel="stylesheet" href="css/font-awesome.min.css">
<link type="text/css" rel="stylesheet" href="css/style.css" />
<script
src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></scrip
t>
<script
src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
</head>
<body>
<header id="header">
<div id="nav">
<div id="nav-top">
<div class="container">
<ul class="nav-social">
<li><a href="/"><i >Hours Project</i> <h4></h4> </a></li>
<li><a href="#"><i class="fa fa-facebook"></i></a></li>
<li><a href="#"><i class="fa fa-twitter"></i></a></li>
<li><a href="#"><i class="fa fa-google-plus"></i></a></li>
<li><a href="#"><i class="fa fa-instagram"></i></a></li>
</ul>
<div class="nav-btns">
<button class="aside-btn"><i class="fa fa-bars"></i></button>
<button class="search-btn"><i class="fa fa-search"></i></button>
<div id="nav-search">
<form method="GET" action="/results">

<input class="input" name="search" placeholder="Enter your


search...">
</form>
<button class="nav-close search-close">
<span></span>
</button>
</div>
</div>
</div>
</div>
<div id="nav-bottom">
<div class="container">
<ul class="nav-menu">
</ul>
</div>
</div>
<div id="nav-aside">
<ul class="nav-aside-menu">

~ 143 ~
<li><a href="#">Home</a></li>
<li class="has-dropdown"><a>Categories</a>
<ul class="dropdown">
</ul>
</li>
<li><a href="about.html">About Us</a></li>
<li><a href="contact.html">Contacts</a></li>
<li><a href="#">Advertise</a></li>
</ul>
<button class="nav-close nav-aside-close"><span></span></button>
</div>
</div>
</header>
<body>
<header id="header">
<div id="nav">
<div id="nav-top">
<div class="container">
</div>
</div>
<div id="nav-bottom">
<div class="container">
<div class="col-md-10">
<div class="dropdown-body tab-content">
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</li>
</div>
</div>
<div id="nav-aside">
<ul class="nav-aside-menu">
<li><a href="index.html">Home</a></li>
<li class="has-dropdown"><a>Categories</a>
<ul class="dropdown">
<li><a href="#">Lifestyle</a></li>
<li><a href="#">Fashion</a></li>
<li><a href="#">Technology</a></li>
<li><a href="#">Travel</a></li>
<li><a href="#">Health</a></li>
</ul>
</li>
<li><a href="about.html">About Us</a></li>
<li><a href="contact.html">Contacts</a></li>
<li><a href="#">Advertise</a></li>
</ul>
<button class="nav-close nav-aside-close"><span></span></button>
</div>
</div>
<div class="page-header">
<div class="page-header-bg" style="background-image:
url('./img/1.jpg');" data-stellar-background-ratio="0.5" ></div>
div class="container">
<div class="row">
<div class="col-md-offset-1 col-md-10 text-center">
<h1 class="text-uppercase">About Us</h1>

~ 144 ~
<p class="lead">Lorem ipsum dolor sit amet, consectetur adipisicing
elit, sed do eiusmod tempor incididunt ut labore et dolore magna
aliqua.</p>
</div>
</div>
</div>
</div>
</header>
<div class="section">
<div class="container">
<div class="row">
<div class="col-md-5">
<div class="section-row">
<div class="section-title">
<h2 class="title">Our story</h2>
</div>
<p>Lorem ipsum dolor sit amet, mea ad idque detraxit, cu soleat
graecis invenire eam. Vidisse suscipit liberavisse has ex, vocibus
patrioque vim et, sed ex tation reprehendunt. Mollis volumus no vix,
ut qui clita habemus, ipsum senserit est et. Ut has soluta epicurei
mediocrem, nibh nostrum his cu, sea clita electram reformidans
an.</p>
<blockquote class="blockquote">
<p>Ei prima graecis consulatu vix, per cu corpora qualisque
voluptaria. Bonorum moderatius in per, ius cu albucius voluptatum. Ne
ius torquatos dissentiunt. Brute illum utroque eu quo. Cu tota
mediocritatem vis, aliquip cotidieque eu ius, cu lorem suscipit
eleifend sit.</p>
<footer class="blockquote-footer">John Doe</footer>
</blockquote>
</div>
</div>
<div class="col-md-7">
<div class="section-row">
<div class="section-title">
<h2 class="title">Our Vision</h2>
</div>
<p>Est in saepe accusam luptatum. Purto deleniti philosophia eum ea,
impetus copiosae id mel. Vis at ignota delenit democritum, te summo
tamquam delicata pro. Utinam concludaturque et vim, mei ullum
intellegam ei. Eam te illum nostrud, suas sonet corrumpit ea per. Ut
sea regione posidonium. Pertinax gubergren ne qui, eos an harum mundi
quaestio.</p>
<p>Nihil persius id est, iisque tincidunt abhorreant no duo. Eripuit
placerat mnesarchum ius at, ei pro laoreet invenire persecuti, per
magna tibique scriptorem an. Aeque oportere incorrupte ius ea,
utroque erroribus mel in, posse dolore nam in. Per veniam vulputate
intellegam et, id usu case reprimique, ne aperiam scaevola sed.
Veritus omnesque qui ad. In mei admodum maiorum iracundia, no omnis
melius eum, ei erat vivendo his. In pri nonumes suscipit.</p>
</div>
</div>
</div>
</div>
</div>
<script src="js/jquery.min.js"></script>
<script src="js/bootstrap.min.js"></script>
<script src="js/jquery.stellar.min.js"></script>
<script src="js/main.js"></script>
</body>
</html>

~ 145 ~
‫فعند الضغط على ‪aboutus‬‬

‫فتظهر لنا هذه الصفحة‪:‬‬

‫~ ‪~ 146‬‬
Laravel-Contacts

resources/views ‫في ملف‬Contacts.html ‫نعمل صفحة‬


:‫ونكتب فيه الكود التالي‬

<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Callie HTML Template</title>
<link
href="https://fonts.googleapis.com/css?family=Montserrat:400,700%7CMu
li:400,700" rel="stylesheet">
<link type="text/css" rel="stylesheet" href="css/bootstrap.min.css"
/>
<link rel="stylesheet" href="css/font-awesome.min.css">
<link type="text/css" rel="stylesheet" href="css/style.css" />
<script
src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></scrip
t>
<script
src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
</head>
<body>
<header id="header">
<div id="nav">
<div id="nav-top">
<ul class="nav-social">
<li><a href="/"><i >HoursProject</i> <h4></h4> </a></li>
<li><a href="#"><i class="fa fa-facebook"></i></a></li>
<li><a href="#"><i class="fa fa-twitter"></i></a></li>
<li><a href="#"><i class="fa fa-google-plus"></i></a></li>
<li><a href="#"><i class="fa fa-instagram"></i></a></li>
</ul>
<div class="nav-btns">
<button class="aside-btn"><i class="fa fa-bars"></i></button>
<button class="search-btn"><i class="fa fa-search"></i></button>
<div id="nav-search">
<form method="GET" action="/results">

<input class="input" name="search" placeholder="Enter your


search...">
</form>
<button class="nav-close search-close">
<span></span>
</button>
</div>
</div>
</div>
</div>
<div id="nav-bottom">
<div class="container">
<ul class="nav-menu">
</ul>

~ 147 ~
</div>
</div>
<div id="nav-aside">
<ul class="nav-aside-menu">
<li><a href="{{ url('/') }}">Home</a></li>
<li class="has-dropdown"><a>Categories</a>
<ul class="dropdown">
</ul>
</li>
<li><a href="about.html">About Us</a></li>
<li><a href="contact.html">Contacts</a></li>
<li><a href="#">Advertise</a></li>
</ul>
<button class="nav-close nav-aside-close"><span></span></button>
</div>
</div>
</header>
<body>
<header id="header">
<div id="nav">
<div id="nav-top">
<div class="container">
</div>
</div>
<div id="nav-bottom">
<div class="container">
<div class="col-md-10">
<div class="dropdown-body tab-content">
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</li>
</div>
</div>
<div id="nav-aside">
<ul class="nav-aside-menu">
<li><a href="#">Home</a></li>
<li class="has-dropdown"><a>Categories</a>
<ul class="dropdown">
<li><a href="#">Lifestyle</a></li>
<li><a href="#">Fashion</a></li>
<li><a href="#">Technology</a></li>
<li><a href="#">Travel</a></li>
<li><a href="#">Health</a></li>
</ul>
</li>
<li><a href="about.html">About Us</a></li>
<li><a href="contact.html">Contacts</a></li>
<li><a href="#">Advertise</a></li>
</ul>
<button class="nav-close nav-aside-close"><span></span></button>
</div>
</div>
<div class="page-header">
<div class="page-header-bg" style="background-image:
url('./img/2.jpg');" data-stellar-background-ratio="0.5" ></div>
<div class="container">

~ 148 ~
<div class="row">
<div class="col-md-offset-1 col-md-10 text-center">
<h1 class="text-uppercase">Contact</h1>
<p class="lead">Lorem ipsum dolor sit amet, consectetur adipisicing
elit, sed do eiusmod tempor incididunt ut labore et dolore magna
aliqua.</p>
</div>
</div>
</div>
</div>
</header>
<div class="section">
<div class="container">
<div class="row">
<div class="col-md-8">
<div class="section-row">
<div class="section-title">
<h2 class="title">Contact Information</h2>
</div>
<p>Malis debet quo et, eam an lorem quaestio. Mea ex quod facer
decore, eu nam mazim postea. Eu deleniti pertinacia ius. Ad elitr
latine eam, ius sanctus eleifend no, cu primis graecis comprehensam
eum. Ne vim prompta consectetuer, etiam signiferumque ea eum.</p>
<ul class="contact">
<li><i class="fa fa-phone"></i> 202-555-0194</li>
<li><i class="fa fa-envelope"></i> <a href="#">Rahma
Altaee@email.com</a></li>
<li><i class="fa fa-map-marker"></i> Iraq-Mosul</li>
</ul>
</div>

<div class="section-row">
<div class="section-title">
<h2 class="title">Mail us</h2>
</div>
<form>
<div class="row">
<div class="col-md-12">
<div class="form-group">
<input class="input" type="email" name="email" placeholder="Email">
</div>
</div>
<div class="col-md-12">
<div class="form-group">
<input class="input" type="text" name="subject"
placeholder="Subject">
</div>
</div>
<div class="col-md-12">
<div class="form-group">
<textarea class="input" name="message"
placeholder="Message"></textarea>
</div>
<button class="primary-button">Submit</button>
</div>
</div>
</form>
</div>
</div>
<div class="col-md-4">
<div class="aside-widget">

~ 149 ~
<div class="section-title">
<h2 class="title">Social Media</h2>
</div>
<div class="social-widget">
<ul>
<li>
<a href="#" class="social-facebook">
<i class="fa fa-facebook"></i>
<span>21.2K<br>Followers</span>
</a>
</li>
<li>
<a href="#" class="social-twitter">
<i class="fa fa-twitter"></i>
<span>10.2K<br>Followers</span>
</a>
</li>
<li>
<a href="#" class="social-google-plus">
<i class="fa fa-google-plus"></i>
<span>5K<br>Followers</span>
</a>
</li>
</ul>
</div>
</div>
<div class="aside-widget">
<div class="section-title">
<h2 class="title">Newsletter</h2>
</div>
<div class="newsletter-widget">
<form>
<p>Nec feugiat nisl pretium fusce id velit ut tortor pretium.</p>
<input class="input" name="newsletter" placeholder="Enter Your
Email">
<button class="primary-button">Subscribe</button>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
<script src="js/jquery.min.js"></script>
<script src="js/bootstrap.min.js"></script>
<script src="js/jquery.stellar.min.js"></script>
<script src="js/main.js"></script>

</body>

</html>

~ 150 ~
‫فعند الضغط على ‪contacts‬‬

‫فتظهر هذه الصفحة‪:‬‬

‫~ ‪~ 151‬‬
Laravel-Search

:‫ ونكتب فيه الكود التالي‬web.php ‫ فدخل الى ملف‬search ‫نعمل‬


<?php

Auth::routes();

Auth::routes(['verify' => true]);


Route::get('/home', 'HomeController@index')->name('home');

//Route::group(['prefix' => 'user', 'middleware'=>'auth'], function


() {
Route::group([ 'middleware'=>'auth'], function () {

//route for posts


Route::get('/posts', 'PostsController@index')->name('posts');
Route::get('/post/trashed', 'PostsController@trashed')-
>name('post.trashed');
Route::get('/post/hdelete/{id}', 'PostsController@hdelete')-
>name('post.hdelete');
Route::get('/post/restore/{id}', 'PostsController@restore')-
>name('post.restore');
Route::get('/post/edit/{id}', 'PostsController@edit')-
>name('post.edit');
Route::post('/post/update/{id}', 'PostsController@update')-
>name('post.update');
Route::get('/post/create', 'PostsController@create')-
>name('post.create');
Route::post('/post/store', 'PostsController@store')-
>name('post.store');
Route::get('/post/delete/{id}', 'postsController@destroy')-
>name('post.delete');

//route for Categorie


Route::get('/categories', 'CategoriesController@index')-
>name('categories');
Route::get('/category/edit/{id}', 'CategoriesController@edit')-
>name('category.edit');
Route::get('/category/delete/{id}', 'CategoriesController@destroy')-
>name('category.delete');
Route::get('/category/create', 'CategoriesController@create')-
>name('category.create');
Route::post('/category/store', 'CategoriesController@store')-
>name('category.store');
Route::post('/category/update/{id}', 'CategoriesController@update')-
>name('category.update');

//route for Tag


Route::get('/tags', 'TagController@index')->name('tags');
Route::get('/tag/edit/{id}', 'TagController@edit')-
>name('tag.edit');
Route::get('/tag/delete/{id}', 'TagController@destroy')-
>name('tag.delete');

~ 152 ~
Route::get('/tag/create', 'TagController@create')-
>name('tag.create');
Route::post('/tag/store', 'TagController@store')-
>name('tag.store');
Route::post('/tag/update/{id}', 'TagController@update')-
>name('tag.update');

//route for users


Route::get('/users', 'UsersController@index')->name('users');
Route::get('/users/admin/{id}', 'UsersController@admin')-
>name('users.admin'); //->middleware('admin');
Route::get('/users/notadmin/{id}', 'UsersController@notAdmin')-
>name('users.not.admin');
Route::get('/users/create', 'UsersController@create')-
>name('users.create');
Route::post('/users/store', 'UsersController@store')-
>name('users.store');
Route::get('/users/delete/{id}', 'UsersController@destroy')-
>name('users.delete');

//route for user profile


Route::get('/users/profile', 'ProfilesController@index')-
>name('users.profile');
Route::post('/users/profile/update', 'ProfilesController@update')-
>name('users.profile.update');
Route::get('/users/profile/create', 'ProfilesController@create')-
>name('users.profile.create');

//route for Settings


Route::get('/settings', 'SettingsController@index')-
>name('settings');
Route::post('/settings/update', 'SettingsController@update')-
>name('settings.update');

//route for User front end


Route::get('/', 'siteUIcontroller@index')->name('index');
Route::get('/category/{id}', 'siteUIcontroller@category')-
>name('category.show');
Route::get('/tag/{id}', 'siteUIcontroller@tag')-
>name('tag.show');

//route for admin dashboard


Route::get('/dashboard', 'HomeController@dashboard')-
>name('dashboard');

//route for query results


Route::get('/results', function () {
$post = App\Post::where('title', 'like' , '%' .
request('search') . '%' )->get();
return view('results.results')
->with('posts' , $post )
->with('title' , 'Result : '. request('search') )
->with('settings', App\Setting::first() )
->with('blog_name' , App\Setting::first()->blog_name)
->with('categories' , App\Category::take(5)->get() )
->with('query' , request('search') ) ;

~ 153 ~
//route for showing single post9
Route::get('/{slug}', 'siteUIcontroller@showPost')-
>name('post.show');

});
views/results/results.blade.php ‫نعمل ملف‬
:‫ونكتب فيه الكود التالي‬
@include('include.header')
<div id="post-header" class="page-header">
<div class="page-header-bg" style="background-image:
url({{asset('./img/header-1.jpg')}});" data-stellar-background-
ratio="0.5"></div>
<div class="container">
<div class="row">
<div class="col-md-10">
<div class="post-category">
<a href="category.html"> Search result : {{$query}}</a>
</div>
<h1> {{$query}}</h1>
<ul class="post-meta">
<li><a href="author.html">John Doe</a></li>

<li><i class="fa fa-comments"></i> 3</li>


<li><i class="fa fa-eye"></i> 807</li>
</ul>
</div>
</div>
</div>
</div>
<div class="section">
<div class="container">
<div class="row">
<div class="col-md-8">
@if ($posts->count() > 0)
@foreach ( $posts as $post)
<div class="post post-row">
<a class="post-img" href="{{route('post.show', ['slug' => $post-
>slug])}}"><img src="{{$post->featrued}}" alt=""></a>
<div class="post-body">
<div class="post-category">

<a href="{{route('post.show', ['slug' => $post->slug])}}">{{$post-


>title}}</a>
</div>
<h3 class="post-title"><a href="{{route('post.show', ['slug' =>
$post->slug])}}">{{$post->updated_at-
>toFormattedDateString()}}</a></h3>
<ul class="post-meta">
<li><a href="author.html">John Doe</a></li>
<li>{{$post->created_at->toFormattedDateString()}}</li>
</ul>
<p>{!!$post->content!!}</p>
</div>
</div>
@endforeach

@else
<div class="post post-row">
<div class="post-body">

~ 154 ~
<div class="post-category">

</div>
<ul class="post-meta">
<h1> No results found !!! </h1>
</ul>
</div>
</div>
@endif
<br>
</div>
<div class="col-md-4">
<div class="aside-widget">
<div class="section-title">
<h2 class="title">Social Media</h2>
</div>
<div class="social-widget">
<ul>
<li>
<a href="#" class="social-facebook">
<i class="fa fa-facebook"></i>
<span>21.2K<br>Followers</span>
</a>
</li>
<li>
<a href="#" class="social-twitter">
<i class="fa fa-twitter"></i>
<span>10.2K<br>Followers</span>
</a>
</li>
<li>
<a href="#" class="social-google-plus">
<i class="fa fa-google-plus"></i>
<span>5K<br>Followers</span>
</a>
</li>
</ul>
</div>
</div>
<div class="aside-widget">
<div class="section-title">
<h2 class="title">Categories</h2>
</div>
<div class="category-widget">
<ul>
<li><a href="#">Lifestyle <span>451</span></a></li>
<li><a href="#">Fashion <span>230</span></a></li>
<li><a href="#">Technology <span>40</span></a></li>
<li><a href="#">Travel <span>38</span></a></li>
<li><a href="#">Health <span>24</span></a></li>
</ul>
</div>
</div>
<div class="aside-widget">
<div class="section-title">
<h2 class="title">Newsletter</h2>
</div>
<div class="newsletter-widget">
<form>
<p>Nec feugiat nisl pretium fusce id velit ut tortor pretium.</p>

~ 155 ~
<input class="input" name="newsletter" placeholder="Enter Your
Email">
<button class="primary-button">Subscribe</button>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
<footer id="footer">
<div class="container">
<div class="row">
<div class="col-md-3">
<div class="footer-widget">
<div class="footer-logo">
<a href="index.html" class="logo"><img src="./img/logo-alt.png"
alt=""></a>
</div>
<p>Nec feugiat nisl pretium fusce id velit ut tortor pretium. Nisl
purus in mollis nunc sed. Nunc non blandit massa enim nec.</p>
<ul class="contact-social">
<li><a href="#" class="social-facebook"><i class="fa fa-
facebook"></i></a></li>
<li><a href="#" class="social-twitter"><i class="fa fa-
twitter"></i></a></li>
<li><a href="#" class="social-google-plus"><i class="fa fa-google-
plus"></i></a></li>
<li><a href="#" class="social-instagram"><i class="fa fa-
instagram"></i></a></li>
</ul>
</div>
</div>
<div class="col-md-3">
<div class="footer-widget">
<h3 class="footer-title">Categories</h3>
<div class="category-widget">
<ul>
<li><a href="#">Lifestyle <span>451</span></a></li>
<li><a href="#">Fashion <span>230</span></a></li>
<li><a href="#">Technology <span>40</span></a></li>
<li><a href="#">Travel <span>38</span></a></li>
<li><a href="#">Health <span>24</span></a></li>
</ul>
</div>
</div>
</div>
<div class="col-md-3">
<div class="footer-widget">
<h3 class="footer-title">Tags</h3>
<div class="tags-widget">
<ul>
<li><a href="#">Social</a></li>
<li><a href="#">Lifestyle</a></li>
<li><a href="#">Blog</a></li>
<li><a href="#">Travel</a></li>
<li><a href="#">Technology</a></li>
<li><a href="#">Fashion</a></li>
<li><a href="#">Life</a></li>
<li><a href="#">News</a></li>
<li><a href="#">Magazine</a></li>

~ 156 ~
<li><a href="#">Food</a></li>
<li><a href="#">Health</a></li>
</ul>
</div>
</div>
</div>
<div class="col-md-3">
<div class="footer-widget">
<h3 class="footer-title">Newsletter</h3>
<div class="newsletter-widget">
<form>
<p>Nec feugiat nisl pretium fusce id velit ut tortor pretium.</p>
<input class="input" name="newsletter" placeholder="Enter Your
Email">
<button class="primary-button">Subscribe</button>
</form>
</div>
</div>
</div>
</div>
<div class="footer-bottom row">
<div class="col-md-6 col-md-push-6">
<ul class="footer-nav">
<li><a href="index.html">Home</a></li>
<li><a href="about.html">About Us</a></li>
<li><a href="contact.html">Contacts</a></li>
<li><a href="#">Advertise</a></li>
<li><a href="#">Privacy</a></li>
</ul>
</div>
<div class="col-md-6 col-md-pull-6">
<div class="footer-copyright">
Copyright &copy;<script>document.write(new
Date().getFullYear());</script> All rights reserved | This template
is made with <i class="fa fa-heart-o" aria-hidden="true"></i> by <a
href="https://colorlib.com" target="_blank">Colorlib</a>
</div>
</div>
</div>
</div>
</footer>
<script src="js/jquery.min.js"></script>
<script src="js/bootstrap.min.js"></script>
<script src="js/jquery.stellar.min.js"></script>
<script src="js/main.js"></script>

</body>

</html>

~ 157 ~
‫فعند الضغط على ‪ search‬تظهر كما في الصورة‪:‬‬

‫فتظهر كل البيانات المتعلقة ب‪ Turkey‬كما في الصورة‪:‬‬

‫~ ‪~ 158‬‬
Laratrust

Laratrust ‫االن في النهاية نقوم بتنزيل‬

composer require santigarcor/laratrust :‫نكتب االمر أوال‬


php artisan vendor:publish --tag="laratrust" :‫ثانيا‬
‫ في حالة الخطا نستخدم هذا االمر‬php artisan config:clear :‫ثالثا‬
php artisan laratrust:setup : ‫رابعا‬
composer dump-autoload :‫خامسا‬
php artisan migrate :‫سادسا‬
Send grid send email ‫نقوم بتنزيل‬
:‫ ونكتب فيه الكود االتي‬config/mail.php ‫وداخل ملف‬
<?php

return [
'driver' => env('MAIL_DRIVER', 'smtp'),
'host' => env('MAIL_HOST', 'smtp.mailgun.org'),
'port' => env('MAIL_PORT', 587),
'from' => [
'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'),
'name' => env('MAIL_FROM_NAME', 'Example'),
],
'encryption' => env('MAIL_ENCRYPTION', 'tls'),
'username' => env('MAIL_USERNAME'),
'password' => env('MAIL_PASSWORD'),
'sendmail' => '/usr/sbin/sendmail -bs',
'markdown' => [
'theme' => 'default',
'paths' => [
resource_path('views/vendor/mail'),
],
],
hannel' => env('MAIL_LOG_CHANNEL'),

];

resources/views/emails/test.blade.php‫وملف‬
:‫ونكتب فيه الكود االتي‬
<html lang="en-US">
<head>
<meta charset="utf-8">
</head>
<body>

~ 159 ~
<h2>Test Email</h2>
<p> </p>
</body>
</html>

‫ وعند ارسال أي تعليق من‬send grid‫ لل‬email ‫ولكن نعمل بالبداية تسجيل دخول الى‬
‫ وتتم العملية بنجاح‬send grid ‫ عبر ايميل سوف يرسل الى‬category ‫صفحة‬

:‫رابط جميع ملفات المشروع على الرابط التالي‬

https://drive.google.com/file/d/1DDqGiQ0akBF4SfjbImXZhBTEzJ0
dlKJG/view?usp=sharing

:‫رابط جداول الموجودة في قاعدة البيانات‬

https://drive.google.com/file/d/1DGybvkpQ8B3cWBf32OYRESLFN
0wtTXmC/view?usp=sharing

~ 160 ~
‫تم بحمد هللا‬

‫‪2020‬‬ ‫‪2019‬‬

‫~ ‪~ 161‬‬

You might also like