إنشاء مدونة في Laravel يتضمن عدة خطوات، بما في ذلك إعداد بيئة Laravel، وتصميم قاعدة البيانات، وإنشاء النماذج ووحدات التحكم وطرق العرض والمسارات، وتنفيذ ميزات مثل إنشاء منشورات المدونة وتحريرها وحذفها
Laravel 9 create blog جدول المحتويات
تثبيت خادم الويب XAMPP
لنظام Windows:
تحميل XAMPP: قم بتحميل XAMPP من موقعه الرسمي: https://www.apachefriends.org/index.html
تثبيت XAMPP:
- قم بتشغيل ملف التثبيت الذي قمت بتحميله.
- اتبع الخطوات المعروضة في المعالج لاختيار المكونات التي تريد تثبيتها (Apache و MySQL على الأقل).
- اختر مجلد لتثبيت XAMPP.
تشغيل Apache و MySQL:
- بعد التثبيت، قم بتشغيل XAMPP Control Panel.
- انقر فوق “Start” بجانب Apache و MySQL لتشغيل الخوادم.
تحقق من العمل:
- افتح متصفح الويب وقم بزيارة
http://localhost
للتأكد من أن XAMPP تعمل بشكل صحيح.
- افتح متصفح الويب وقم بزيارة
لنظام macOS:
تحميل XAMPP: قم بتحميل XAMPP من الموقع الرسمي: https://www.apachefriends.org/index.html
تثبيت XAMPP:
- قم بفتح ملف التثبيت الذي قمت بتحميله.
- اتبع الإرشادات لتثبيت XAMPP.
تشغيل Apache و MySQL:
- بعد التثبيت، افتح XAMPP Control Panel.
- انقر فوق “Start” بجانب Apache و MySQL.
تحقق من العمل:
- افتح متصفح الويب واذهب إلى
http://localhost
للتأكد من أن XAMPP تعمل.
- افتح متصفح الويب واذهب إلى
لنظام Linux:
- تحميل XAMPP: قم بتحميل XAMPP من موقعه الرسمي: https://www.apachefriends.org/index.html
- تثبيت XAMPP:
- انتقل إلى المجلد الذي قمت بتحميل XAMPP إليه.
- قم بفتح نافذة الطرفية وقم بتشغيل الأمر التالي لتثبيت XAMPP:
sudo ./xampp-linux-x64-<إصدار>.run
- (استبدل
<إصدار>
بالإصدار الذي قمت بتحميله) - تشغيل Apache و MySQL:
- بعد التثبيت، افتح نافذة الطرفية وأدخل الأمر:
sudo /opt/lampp/lampp start
- تحقق من العمل:
افتح متصفح الويب واذهب إلى http://localhost
للتحقق من أن XAMPP تعمل.
تثبيت Laravel 9
بعد التاكد من تثبيت composer علي الجهاز الخاص بك استخدم الكود التالي:
composer create-project --prefer-dist laravel/laravel My-Blog "9.*"
بعد اكتمال التثبيت، انتقل إلى مجلد المشروع باستخدام:
cd My-Blog
الاتصال بقاعدة البيانات Database
بعد تثبيت تطبيق Laravel 9، نحتاج أولاً إلى إنشاء اتصال بقاعدة بيانات MySQL. لذلك، يتعين علينا فتح ملف .env وتحت هذا الملف، نحتاج إلى إضافة تكوين قاعدة بيانات MySQL مثل اسم قاعدة بيانات MySQL واسم مستخدم قاعدة بيانات MySQL وتفاصيل كلمة المرور. بمجرد تحديد هذه التفاصيل، سيتم إجراء اتصال بقاعدة بيانات MySQL في إطار عمل Laravel 9. يمكنك العثور أدناه على تفاصيل تكوين قاعدة بيانات MySQL.
env.
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=my-blog
DB_USERNAME=root
DB_PASSWORD=
Laravel UI
لارافيل UI هو حزمة تساعد في تنشيط واجهة تطبيق لارافيل الأمامية باستخدام عروض وموارد مسبقة لإطارات العمل الأمامية الشهيرة مثل Bootstrap وVue.js وReact. يبسط هذا الأمر عملية إعداد مكونات الواجهة الأمامية
composer require laravel/ui
Bootstrap & Auth
يستخدم لتثبيت حزمة Bootstrap وإنشاء هيكل مبدئي لنظام المصادقة (Authentication) في Laravel. هذا الأمر يقوم بإعداد الجوانب الأساسية لنظام المصادقة مثل تسجيل الدخول (Login) وتسجيل المستخدمين (Registration)
php artisan ui bootstrap --auth
HomeController
لقد قمت بإنشاء HomeController بعد استخدام الامر السابق والذي يمكنك العثور عليه لو اتبعت الرابط App\Http\Controllers\HomeController.php الآن افتحه وتاكد من لصق الكود التالي أدناه:
middleware('auth');
}
/**
* Show the application dashboard.
*
* @return \Illuminate\Contracts\Support\Renderable
*/
public function index()
{
return view('home');
}
}
PostController , Table & Model
بعد ذلك نقوم بانشاء جدول في قاعدة البيانات و موديل و كونرولر بنفس الاسم عن طريق الكود التالي
php artisan make:model Post -mc
بذلك قد انشأنا migration, controller and model باسم post
بعد تشغيل الأمر أعلاه، ستجد ملفًا جديدًا ضمن دليل قاعدة البيانات/الترحيلات. لذلك يتعين علينا فتح هذا الملف وتحت هذا الملف، يتعين علينا تحديد التعليمات البرمجية التالية ضمن ملف الترحيل هذا لإنشاء جدول posts في قاعدة بيانات MySQL.
Table Posts
public function up() {
Schema::create('posts', function (Blueprint $table) {
$table->id();
$table->string('title')->nullable();
$table->text('description')->nullable();
$table->string('image')->nullable();
$table->timestamps();
});
}
بعد ذلك نقوم بترحيل بيانات الجدول بالامر التالي
php artisan migrate
بذلك تم انشاء جدول posts في قاعدة البيانات
ثم استخدام الاكواد التالية قبل انشاء صفحات blade
npm install
npm run dev
يمكنك استخدام الكود build التالي في حالة حدوث مشاكل في run dev
npm run build
بهذا تم استكمال بيئة لارافيل laravel complete
PostController
انت بالفعل قمت بإنشاء PostController والذي يمكنك العثور عليه لو اتبعت الرابط App\Http\Controllers\PostController .php الآن افتحه وتاكد من لصق الكود التالي أدناه:
get();
$posts = Post::all();
return view('index', ['posts' => $posts]);
}
// Create post
public function create() {
return view('create');
}
// Store post
public function store(Request $request) {
// validations
$request->validate([
'title' => 'required',
'description' => 'required',
'image' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
]);
$post = new Post;
$file_name = time() . '.' . request()->image->getClientOriginalExtension();
request()->image->move(public_path('images'), $file_name);
$post->title = $request->title;
$post->description = $request->description;
$post->image = $file_name;
$post->save();
return redirect()->route('index')->with('success', 'Post created successfully.');
}
}
لا تنسي اضافة الكود التالي للكنترولر add code to PostController في اعلي الصفحة
use App\Models\Post;
Model
لاستكمال عملية التسجيل في قاعدة البيانات يجب ادخال الكود التالي في الموديل App/Models/Post
Blade Files
في البداية نقوم بانشاء مجلد layouts , داخل resources/views
داخل مجلد layouts ننشيء ملف باسم app.blade.php كما في الصورة التالية :
app.blade.php
ثم نقوم بنسخ الكود التالي داخل ملف app.blade.php
My Blog
@vite(['resources/sass/app.scss', 'resources/js/app.js'])
@yield('content')
index.blade.php
داخل resources/views ننشيء ملف باسم index.blade.php ثم نقوم بنسخ الكود التالي داخله
@extends('layouts.app')
@section('content')
@if (Auth::check())
Add Post
@endif
All Posts
@if ($message = Session::get('success'))
{{ $message }}
@endif
@if (count($posts) > 0)
@foreach ($posts as $post)
{{$post->title}}
{{$post->description}}
@endforeach
@else
No Posts found
@endif
@endsection
create.blade.php
داخل resources/views ننشيء ملف باسم create.blade.php ثم نقوم بنسخ الكود التالي داخله
@extends('layouts.app')
@section('content')
@if (Auth::check())
Add Post
@endif
All Posts
@if ($message = Session::get('success'))
{{ $message }}
@endif
@if (count($posts) > 0)
@foreach ($posts as $post)
{{$post->title}}
{{$post->description}}
@endforeach
@else
No Posts found
@endif
@endsection
login.blade.php
بعد ذلك نذهب الي المجلد auth داخل resources/views
داخل مجلد auth سنجد ملف باسم login.blade.php نقوم بنسخ الكود التالي:
@extends('layouts.app')
@section('content')
{{ __('Login') }}
@endsection
register.blade.php
ثم نقوم بنسخ الكود التالي في ملف register.blade.php
@extends('layouts.app')
@section('content')
{{ __('Register') }}
@endsection
home.blade.php
ثم نتاكد من نسخ الكود التالي في home.blade.php
@extends('layouts.app')
@section('content')
{{ __('Dashboard') }}
@if (session('status'))
{{ session('status') }}
@endif
{{ __('You are logged in!') }}
GoTo Blog Posts
@endsection
The Routes
web.php
داخل مجلد routes يوجد ملف web.php نقوم بنسخ الكود التالي داخله
name('index');
Route::post('store', [App\Http\Controllers\PostController::class, 'store'])->name('posts.store');
Route::get('/create', [App\Http\Controllers\PostController::class, 'create']);
Auth::routes();
Route::get('/home', [App\Http\Controllers\HomeController::class, 'index'])->name('home');
لامكانية مسح post
نقوم باضافة الكود التالي في PostController
public function destroy(Post $post)
{
$post->delete();
return back()->with('success','Post delete successfully.');
}
نقوم باضافة الكود التالي في routes.web
Route::delete('posts/{post}/delete', [App\Http\Controllers\PostController::class, 'destroy'])->name('posts.destroy');
نقوم باضافة الكود التالي في index.blade بعد لاين 31 وتعديل لاين 28 الي col-8
@if (Auth::check())
{{-- Delete --}}
@endif
لعرض post في صفحة مستقلة
نقوم باضافة الكود التالي في PostController
public function show($id) {
$posts = Post::where('id', $id)->get();
return view('show', compact('posts'));
}
نقوم باضافة الكود التالي في routes.web
Route::get('show/{post}', [App\Http\Controllers\PostController::class, 'show'])->name('show');
نقوم بتعديل صفحة index.blade ونسخ الكود التالي
@extends('layouts.app')
@section('content')
@if (Auth::check())
Add Post
@endif
All Posts
@if ($message = Session::get('success'))
{{ $message }}
@endif
@if (count($posts) > 0)
@foreach ($posts as $post)
@endforeach
@else
No Posts found
@endif
@endsection
show.blade.php
نقوم بانشاء صفحة show.blade داخل resources/views ونسخ الكود التالي
@extends('layouts.app')
@section('content')
@endforeach
@endsection
في حالة ظهور اي مشكلة اثناء التطبيق ساكون سعيد بحلها معكم . حظ سعيد
Sharing to
تفاعلكم معنا يجعلنا نقدم لكم المزيد ويمنحنا طاقة ايجابية تشجعنا علي الاستمرار
You made some decent points there. I checked on the internet to learn more about the issue and found most individuals will go along with
your views on this web site.
thank you bro
you can also see
laravel-9-notifications-with-database/
It will be suitable for you
You welcome