अध्याय 8: Laravel फॉर्म हैंडलिंग और वेलिडेशन (Form Handling and Validation)

अध्याय 8: Laravel फॉर्म हैंडलिंग और वेलिडेशन (Form Handling and Validation)

इस अध्याय में, हम Laravel में फॉर्म हैंडलिंग और वेलिडेशन के बारे में जानेंगे। फॉर्म हैंडलिंग वेब एप्लिकेशन का एक महत्वपूर्ण हिस्सा है, क्योंकि यह उपयोगकर्ताओं से डेटा प्राप्त करने और उसे प्रोसेस करने का माध्यम है। Laravel फॉर्म हैंडलिंग को सरल और सुरक्षित बनाने के लिए कई सुविधाएँ प्रदान करता है। वेलिडेशन का उपयोग करके हम सुनिश्चित कर सकते हैं कि उपयोगकर्ता द्वारा प्रदान किया गया डेटा सही और सुरक्षित है। इस अध्याय में, हम फॉर्म बनाना, फॉर्म सबमिशन को प्रोसेस करना, और डेटा वेलिडेशन को विस्तार से समझेंगे। आइए, Laravel फॉर्म हैंडलिंग और वेलिडेशन की इस महत्वपूर्ण यात्रा की शुरुआत करें और जानें कि कैसे आप अपने वेब एप्लिकेशन को अधिक इंटरैक्टिव और सुरक्षित बना सकते हैं।

फॉर्म बनाना (Creating Forms)

Laravel में फॉर्म बनाना एक सरल और शक्तिशाली प्रक्रिया है। आप Blade टेम्प्लेट्स और Laravel के फॉर्म हेल्पर का उपयोग करके आसानी से फॉर्म बना सकते हैं। आइए, हम एक फॉर्म बनाने के विभिन्न चरणों को समझें।

1. Blade टेम्प्लेट में फॉर्म बनाना (Creating a Form in Blade Template)

सबसे पहले, आपको अपने Blade टेम्प्लेट में HTML फॉर्म को परिभाषित करना होगा। उदाहरण के लिए, एक साधारण फॉर्म जो उपयोगकर्ता से नाम और ईमेल पता प्राप्त करता है:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<!-- resources/views/contact.blade.php -->
<!DOCTYPE html>
<html>
<head>
<title>Contact Form</title>
</head>
<body>
<h1>Contact Us</h1>
<form action="/contact" method="POST">
@csrf
<div>
<label for="name">Name:</label>
<input type="text" id="name" name="name" required>
</div>
<div>
<label for="email">Email:</label>
<input type="email" id="email" name="email" required>
</div>
<div>
<button type="submit">Submit</button>
</div>
</form>
</body>
</html>
<!-- resources/views/contact.blade.php --> <!DOCTYPE html> <html> <head> <title>Contact Form</title> </head> <body> <h1>Contact Us</h1> <form action="/contact" method="POST"> @csrf <div> <label for="name">Name:</label> <input type="text" id="name" name="name" required> </div> <div> <label for="email">Email:</label> <input type="email" id="email" name="email" required> </div> <div> <button type="submit">Submit</button> </div> </form> </body> </html>
<!-- resources/views/contact.blade.php -->
<!DOCTYPE html>
<html>
<head>
    <title>Contact Form</title>
</head>
<body>
    <h1>Contact Us</h1>
    <form action="/contact" method="POST">
    	@csrf
    	<div>
        	<label for="name">Name:</label>
        	<input type="text" id="name" name="name" required>
    	</div>
    	<div>
        	<label for="email">Email:</label>
        	<input type="email" id="email" name="email" required>
    	</div>
    	<div>
        	<button type="submit">Submit</button>
    	</div>
    </form>
</body>
</html>

ऊपर दिए गए उदाहरण में, हमने एक फॉर्म परिभाषित किया है जो POST मेथड का उपयोग करके /contact URL पर डेटा सबमिट करता है। @csrf Blade डायरेक्टिव फॉर्म में एक CSRF (Cross-Site Request Forgery) टोकन जोड़ता है, जो फॉर्म सबमिशन को सुरक्षित बनाता है।

2. रूट परिभाषित करना (Defining the Route)

अब, आपको अपने फॉर्म सबमिशन को हैंडल करने के लिए एक रूट परिभाषित करना होगा। रूट को routes/web.php फाइल में जोड़ें:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\ContactController;
Route::get('/contact', function () {
return view('contact');
});
Route::post('/contact', [ContactController::class, 'store']);
use Illuminate\Support\Facades\Route; use App\Http\Controllers\ContactController; Route::get('/contact', function () { return view('contact'); }); Route::post('/contact', [ContactController::class, 'store']);
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\ContactController;

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

Route::post('/contact', [ContactController::class, 'store']);

ऊपर दिए गए उदाहरण में, GET रूट /contact फॉर्म व्यू को रेंडर करता है, और POST रूट /contact फॉर्म सबमिशन को ContactController के store मेथड में प्रोसेस करता है।

3. कंट्रोलर बनाना (Creating the Controller)

अब, आपको एक कंट्रोलर बनाना होगा जो फॉर्म डेटा को प्रोसेस करेगा। कंट्रोलर बनाने के लिए निम्नलिखित कमांड चलाएँ:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<a href="https://goodvibesonly.cloud/upwork-cover-letter-tips-examples-hindi/">php</a> artisan make:controller ContactController
<a href="https://goodvibesonly.cloud/upwork-cover-letter-tips-examples-hindi/">php</a> artisan make:controller ContactController
php artisan make:controller ContactController

इससे app/Http/Controllers/ContactController.php नाम की फाइल बनेगी। अब इस फाइल में फॉर्म डेटा को हैंडल करने के लिए store मेथड जोड़ें:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class ContactController extends Controller
{
public function store(Request $request)
{
// फॉर्म डेटा को प्रोसेस करें
$name = $request->input('name');
$email = $request->input('email');
// यहां आप डेटा को डेटाबेस में सेव कर सकते हैं, ईमेल भेज सकते हैं, आदि।
return redirect('/contact')->with('success', 'Thank you for contacting us!');
}
}
?>
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class ContactController extends Controller { public function store(Request $request) { // फॉर्म डेटा को प्रोसेस करें $name = $request->input('name'); $email = $request->input('email'); // यहां आप डेटा को डेटाबेस में सेव कर सकते हैं, ईमेल भेज सकते हैं, आदि। return redirect('/contact')->with('success', 'Thank you for contacting us!'); } } ?>
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class ContactController extends Controller
{
    public function store(Request $request)
    {
        // फॉर्म डेटा को प्रोसेस करें
        $name = $request->input('name');
        $email = $request->input('email');

        // यहां आप डेटा को डेटाबेस में सेव कर सकते हैं, ईमेल भेज सकते हैं, आदि।
        
        return redirect('/contact')->with('success', 'Thank you for contacting us!');
    }
}
?>

ऊपर दिए गए उदाहरण में, store मेथड में Request ऑब्जेक्ट के माध्यम से फॉर्म डेटा प्राप्त किया जाता है। फिर, डेटा को प्रोसेस किया जाता है और उपयोगकर्ता को धन्यवाद संदेश के साथ /contact पेज पर रीडायरेक्ट किया जाता है।

4. फॉर्म वेलिडेशन जोड़ना (Adding Form Validation)

आप वेलिडेशन नियम जोड़कर सुनिश्चित कर सकते हैं कि उपयोगकर्ता द्वारा प्रदान किया गया डेटा सही और सुरक्षित है। वेलिडेशन जोड़ने के लिए, store मेथड में निम्नलिखित कोड जोड़ें:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
public function store(Request $request)
{
// वेलिडेशन नियम
$validatedData = $request->validate([
'name' => 'required|max:255',
'email' => 'required|email',
]);
// फॉर्म डेटा को प्रोसेस करें
$name = $validatedData['name'];
$email = $validatedData['email'];
// यहां आप डेटा को डेटाबेस में सेव कर सकते हैं, ईमेल भेज सकते हैं, आदि।
return redirect('/contact')->with('success', 'Thank you for contacting us!');
}
public function store(Request $request) { // वेलिडेशन नियम $validatedData = $request->validate([ 'name' => 'required|max:255', 'email' => 'required|email', ]); // फॉर्म डेटा को प्रोसेस करें $name = $validatedData['name']; $email = $validatedData['email']; // यहां आप डेटा को डेटाबेस में सेव कर सकते हैं, ईमेल भेज सकते हैं, आदि। return redirect('/contact')->with('success', 'Thank you for contacting us!'); }
public function store(Request $request)
{
    // वेलिडेशन नियम
    $validatedData = $request->validate([
        'name' => 'required|max:255',
        'email' => 'required|email',
    ]);

    // फॉर्म डेटा को प्रोसेस करें
    $name = $validatedData['name'];
    $email = $validatedData['email'];

    // यहां आप डेटा को डेटाबेस में सेव कर सकते हैं, ईमेल भेज सकते हैं, आदि।

    return redirect('/contact')->with('success', 'Thank you for contacting us!');
}

ऊपर दिए गए उदाहरण में, validate मेथड का उपयोग करके वेलिडेशन नियम लागू किए गए हैं। यदि वेलिडेशन विफल होता है, तो उपयोगकर्ता को स्वचालित रूप से पूर्व पृष्ठ पर रीडायरेक्ट किया जाएगा और वेलिडेशन त्रुटियों के साथ।

Laravel में फॉर्म बनाना और हैंडल करना बेहद सरल और सुरक्षित है। Blade टेम्प्लेट्स और वेलिडेशन नियमों का उपयोग करके आप अपने फॉर्म्स को उपयोगकर्ता-अनुकूल और सुरक्षित बना सकते हैं।

फॉर्म डेटा वेलिडेशन (Form Data Validation)

फॉर्म डेटा वेलिडेशन आपके वेब एप्लिकेशन की सुरक्षा और डेटा की अखंडता सुनिश्चित करने का एक महत्वपूर्ण हिस्सा है। Laravel में वेलिडेशन को लागू करना सरल और सहज है। Laravel वेलिडेशन नियमों और कस्टम मैसेज का उपयोग करके आप उपयोगकर्ता द्वारा प्रस्तुत डेटा की वैधता की जांच कर सकते हैं। आइए, हम फॉर्म डेटा वेलिडेशन के विभिन्न पहलुओं को समझें।

1. वेलिडेशन नियम लागू करना (Applying Validation Rules)

आप वेलिडेशन नियमों को कंट्रोलर के मेथड में लागू कर सकते हैं। उदाहरण के लिए, यदि आप एक संपर्क फ़ॉर्म के लिए वेलिडेशन नियम लागू करना चाहते हैं:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class ContactController extends Controller
{
public function store(Request $request)
{
// वेलिडेशन नियम लागू करें
$validatedData = $request->validate([
'name' => 'required|max:255',
'email' => 'required|email',
'message' => 'required|min:10',
]);
// वेलिडेटेड डेटा को प्रोसेस करें
$name = $validatedData['name'];
$email = $validatedData['email'];
$message = $validatedData['message'];
// डेटा प्रोसेसिंग (जैसे कि डेटाबेस में सेव करना, ईमेल भेजना आदि)
return redirect('/contact')->with('success', 'Thank you for contacting us!');
}
}
?>
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class ContactController extends Controller { public function store(Request $request) { // वेलिडेशन नियम लागू करें $validatedData = $request->validate([ 'name' => 'required|max:255', 'email' => 'required|email', 'message' => 'required|min:10', ]); // वेलिडेटेड डेटा को प्रोसेस करें $name = $validatedData['name']; $email = $validatedData['email']; $message = $validatedData['message']; // डेटा प्रोसेसिंग (जैसे कि डेटाबेस में सेव करना, ईमेल भेजना आदि) return redirect('/contact')->with('success', 'Thank you for contacting us!'); } } ?>
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class ContactController extends Controller
{
    public function store(Request $request)
    {
        // वेलिडेशन नियम लागू करें
        $validatedData = $request->validate([
            'name' => 'required|max:255',
            'email' => 'required|email',
            'message' => 'required|min:10',
        ]);
        // वेलिडेटेड डेटा को प्रोसेस करें
        $name = $validatedData['name'];
        $email = $validatedData['email'];
        $message = $validatedData['message'];
        // डेटा प्रोसेसिंग (जैसे कि डेटाबेस में सेव करना, ईमेल भेजना आदि)
        return redirect('/contact')->with('success', 'Thank you for contacting us!');
    }
}
?>

ऊपर दिए गए उदाहरण में, validate मेथड का उपयोग करके वेलिडेशन नियम लागू किए गए हैं। ये नियम सुनिश्चित करते हैं कि नाम आवश्यक है और अधिकतम 255 वर्णों तक हो सकता है, ईमेल आवश्यक है और एक वैध ईमेल एड्रेस होना चाहिए, और संदेश आवश्यक है और कम से कम 10 वर्ण लंबा होना चाहिए।

2. कस्टम वेलिडेशन मैसेज (Custom Validation Messages)

आप कस्टम वेलिडेशन मैसेज भी परिभाषित कर सकते हैं ताकि उपयोगकर्ताओं को अधिक उपयोगकर्ता-अनुकूल त्रुटि संदेश दिखाए जा सकें। इसके लिए, आप validate मेथड के दूसरे पैरामीटर के रूप में कस्टम मैसेज पास कर सकते हैं:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
public function store(Request $request)
{
// वेलिडेशन नियम और कस्टम मैसेज
$validatedData = $request->validate([
'name' => 'required|max:255',
'email' => 'required|email',
'message' => 'required|min:10',
], [
'name.required' => 'कृपया अपना नाम दर्ज करें।',
'email.required' => 'कृपया अपना ईमेल पता दर्ज करें।',
'email.email' => 'कृपया एक वैध ईमेल पता दर्ज करें।',
'message.required' => 'कृपया अपना संदेश दर्ज करें।',
'message.min' => 'संदेश कम से कम 10 वर्णों का होना चाहिए।',
]);
// वेलिडेटेड डेटा को प्रोसेस करें
$name = $validatedData['name'];
$email = $validatedData['email'];
$message = $validatedData['message'];
// डेटा प्रोसेसिंग (जैसे कि डेटाबेस में सेव करना, ईमेल भेजना आदि)
return redirect('/contact')->with('success', 'Thank you for contacting us!');
}
public function store(Request $request) { // वेलिडेशन नियम और कस्टम मैसेज $validatedData = $request->validate([ 'name' => 'required|max:255', 'email' => 'required|email', 'message' => 'required|min:10', ], [ 'name.required' => 'कृपया अपना नाम दर्ज करें।', 'email.required' => 'कृपया अपना ईमेल पता दर्ज करें।', 'email.email' => 'कृपया एक वैध ईमेल पता दर्ज करें।', 'message.required' => 'कृपया अपना संदेश दर्ज करें।', 'message.min' => 'संदेश कम से कम 10 वर्णों का होना चाहिए।', ]); // वेलिडेटेड डेटा को प्रोसेस करें $name = $validatedData['name']; $email = $validatedData['email']; $message = $validatedData['message']; // डेटा प्रोसेसिंग (जैसे कि डेटाबेस में सेव करना, ईमेल भेजना आदि) return redirect('/contact')->with('success', 'Thank you for contacting us!'); }
public function store(Request $request)
{
    // वेलिडेशन नियम और कस्टम मैसेज
    $validatedData = $request->validate([
        'name' => 'required|max:255',
        'email' => 'required|email',
        'message' => 'required|min:10',
    ], [
        'name.required' => 'कृपया अपना नाम दर्ज करें।',
        'email.required' => 'कृपया अपना ईमेल पता दर्ज करें।',
        'email.email' => 'कृपया एक वैध ईमेल पता दर्ज करें।',
        'message.required' => 'कृपया अपना संदेश दर्ज करें।',
        'message.min' => 'संदेश कम से कम 10 वर्णों का होना चाहिए।',
    ]);

    // वेलिडेटेड डेटा को प्रोसेस करें
    $name = $validatedData['name'];
    $email = $validatedData['email'];
    $message = $validatedData['message'];

    // डेटा प्रोसेसिंग (जैसे कि डेटाबेस में सेव करना, ईमेल भेजना आदि)

    return redirect('/contact')->with('success', 'Thank you for contacting us!');
}

3. कस्टम वेलिडेशन नियम (Custom Validation Rules)

आप कस्टम वेलिडेशन नियम भी बना सकते हैं। इसके लिए, आप एक कस्टम वेलिडेशन क्लास बना सकते हैं और उसमें passes और message मेथड्स परिभाषित कर सकते हैं:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
php artisan make:rule Uppercase
php artisan make:rule Uppercase
php artisan make:rule Uppercase

यह कमांड app/Rules/Uppercase.php नाम की फाइल बनाएगा। अब इस फाइल में निम्नलिखित कोड जोड़ें:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<?php
namespace App\Rules;
use Illuminate\Contracts\Validation\Rule;
class Uppercase implements Rule
{
public function passes($attribute, $value)
{
return strtoupper($value) === $value;
}
public function message()
{
return 'The :attribute must be uppercase.';
}
}
?>
<?php namespace App\Rules; use Illuminate\Contracts\Validation\Rule; class Uppercase implements Rule { public function passes($attribute, $value) { return strtoupper($value) === $value; } public function message() { return 'The :attribute must be uppercase.'; } } ?>
<?php

namespace App\Rules;

use Illuminate\Contracts\Validation\Rule;

class Uppercase implements Rule
{
    public function passes($attribute, $value)
    {
        return strtoupper($value) === $value;
    }

    public function message()
    {
        return 'The :attribute must be uppercase.';
    }
}

?>

अब आप इस कस्टम वेलिडेशन नियम को अपने वेलिडेशन नियमों में उपयोग कर सकते हैं:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
use App\Rules\Uppercase;
public function store(Request $request)
{
$validatedData = $request->validate([
'name' => ['required', 'max:255', new Uppercase],
'email' => 'required|email',
'message' => 'required|min:10',
]);
// वेलिडेटेड डेटा को प्रोसेस करें
return redirect('/contact')->with('success', 'Thank you for contacting us!');
}
use App\Rules\Uppercase; public function store(Request $request) { $validatedData = $request->validate([ 'name' => ['required', 'max:255', new Uppercase], 'email' => 'required|email', 'message' => 'required|min:10', ]); // वेलिडेटेड डेटा को प्रोसेस करें return redirect('/contact')->with('success', 'Thank you for contacting us!'); }
use App\Rules\Uppercase;

public function store(Request $request)
{
    $validatedData = $request->validate([
        'name' => ['required', 'max:255', new Uppercase],
        'email' => 'required|email',
        'message' => 'required|min:10',
    ]);

    // वेलिडेटेड डेटा को प्रोसेस करें

    return redirect('/contact')->with('success', 'Thank you for contacting us!');
}

Laravel में फॉर्म डेटा वेलिडेशन का उपयोग करके आप अपने एप्लिकेशन के डेटा की अखंडता और सुरक्षा सुनिश्चित कर सकते हैं। वेलिडेशन नियम और कस्टम मैसेज का सही उपयोग करके आप उपयोगकर्ताओं को एक बेहतर और सुरक्षित अनुभव प्रदान कर सकते हैं।



Index