الدورات
title
إنشاء Forms في لارافيل (Laravel)
إنشاء Forms في لارافيل (Laravel)
تُعد الـForms في لارافيل من الأدوات الأساسية التي تُستخدم لجمع البيانات من المستخدمين مثل تسجيل الدخول، التسجيل، إضافة المقالات، أو إدخال أي نوع من البيانات في الموقع.
في هذا المقال، سنتعرف على كيفية إنشاء النماذج (Forms) في لارافيل خطوة بخطوة، وكيفية إرسال البيانات والتحقق منها ومعالجتها.
أولاً: إنشاء Route للتعامل مع النموذج
في البداية نحتاج إلى تعريف مسار (Route) لاستعراض النموذج ومسار آخر لمعالجة البيانات المرسلة.
// عرض النموذج
Route::get('/contact', [ContactController::class, 'showForm'])->name('contact.form');
// استقبال البيانات من النموذج
Route::post('/contact', [ContactController::class, 'submitForm'])->name('contact.submit');
بهذا الشكل، نقوم بإنشاء مسارين:
- الأول من نوع GET لعرض النموذج.
- الثاني من نوع POST لمعالجة البيانات المرسلة من المستخدم.
ثانياً: إنشاء Controller خاص بالنموذج
نقوم بإنشاء Controller للتعامل مع النموذج عبر الأمر التالي في التيرمنال:
php artisan make:controller ContactController
بعد الإنشاء، نضيف داخله دالتين كما في المثال التالي:
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class ContactController extends Controller
{
// عرض النموذج
public function showForm()
{
return view('contact');
}
// معالجة البيانات المرسلة من النموذج
public function submitForm(Request $request)
{
// التحقق من صحة البيانات
$request->validate([
'name' => 'required|min:3',
'email' => 'required|email',
'message' => 'required'
]);
// معالجة البيانات (مثلاً حفظها في قاعدة البيانات أو إرسال بريد)
// Contact::create($request->all());
return back()->with('success', 'تم إرسال الرسالة بنجاح!');
}
}
ثالثاً: إنشاء View يحتوي على النموذج
ننشئ ملف View باسم contact.blade.php داخل مجلد resources/views/، ونضيف الكود التالي:
<!DOCTYPE html>
<html lang="ar">
<head>
<meta charset="UTF-8">
<title>اتصل بنا</title>
</head>
<body>
<h2>نموذج الاتصال</h2>
@if(session('success'))
<p style="color: green;">{{ session('success') }}</p>
@endif
<form action="{{ route('contact.submit') }}" method="POST">
@csrf
<label for="name">الاسم:</label><br>
<input type="text" name="name" id="name" value="{{ old('name') }}"><br>
@error('name') <p style="color: red;">{{ $message }}</p> @enderror
<label for="email">البريد الإلكتروني:</label><br>
<input type="email" name="email" id="email" value="{{ old('email') }}"><br>
@error('email') <p style="color: red;">{{ $message }}</p> @enderror
<label for="message">الرسالة:</label><br>
<textarea name="message" id="message">{{ old('message') }}</textarea><br>
@error('message') <p style="color: red;">{{ $message }}</p> @enderror
<button type="submit">إرسال</button>
</form>
</body>
</html>
شرح بسيط:
@csrf: توجيه ضروري في لارافيل لحماية النموذج من هجمات CSRF.old('field'): تُعيد آخر قيمة أدخلها المستخدم في حالة وجود خطأ.@error: تُستخدم لعرض رسالة الخطأ في حالة فشل التحقق من الحقول.
رابعاً: التحقق من صحة البيانات (Validation)
لارافيل تُسهل عملية التحقق من البيانات عبر دالة validate() في الكود السابق.
مثلاً:
$request->validate([
'name' => 'required|min:3',
'email' => 'required|email',
'message' => 'required'
]);
هذا يعني أن:
- حقل name مطلوب ويجب ألا يقل عن 3 حروف.
- حقل email يجب أن يحتوي على بريد إلكتروني صالح.
- حقل message مطلوب.
خامساً: عرض الرسائل للمستخدم
بعد إرسال النموذج بنجاح، يمكننا إظهار رسالة تأكيد باستخدام:
return back()->with('success', 'تم إرسال الرسالة بنجاح!');
وفي صفحة العرض، نستدعيها كالتالي:
@if(session('success'))
<p style="color: green;">{{ session('success') }}</p>
@endif
سادساً: حفظ البيانات في قاعدة البيانات (اختياري)
يمكننا ربط النموذج بقاعدة البيانات بسهولة باستخدام Eloquent.
على سبيل المثال:
- إنشاء Model باسم Contact:
php artisan make:model Contact -m
- في ملف الـMigration نضيف الأعمدة:
$table->string('name');
$table->string('email');
$table->text('message');
- في الـController نضيف:
Contact::create($request->all());
خلاصة
- يمكن إنشاء النماذج في لارافيل بسهولة باستخدام Blade وRoutes وControllers.
- تدعم لارافيل التحقق من صحة البيانات وحماية النماذج من الهجمات الأمنية.
- يمكن تخزين البيانات في قاعدة البيانات مباشرة باستخدام Eloquent ORM.