লারাভেল ভ্যালিডেশন (Laravel Validation)

Web Development - লারাভেল (Laravel) - লারাভেল ব্যাসিক (Laravel Basic) |
8
8

লারাভেল ভ্যালিডেশন: বিস্তারিত আলোচনা

লারাভেল ভ্যালিডেশন একটি শক্তিশালী বৈশিষ্ট্য, যা ব্যবহারকারীর ইনপুট সঠিক ও নিরাপদ নিশ্চিত করতে সহায়তা করে। আসুন প্রতিটি ফিচারকে বিস্তারিতভাবে উদাহরণসহ আলোচনা করি।

১. পরিচিতি

ভ্যালিডেশন একটি গুরুত্বপূর্ণ প্রক্রিয়া, যা ইনপুট ডেটা যাচাই করে। এটি ব্যবহারকারীদের কাছ থেকে সঠিক ডেটা সংগ্রহে সাহায্য করে এবং নিরাপত্তা বাড়ায়।

২. ভ্যালিডেশন কুইকস্টার্ট

এটি শুরু করতে হলে, প্রথমে একটি রাউট তৈরি করতে হবে যা ফর্ম ডেটা প্রক্রিয়া করবে।

রাউট নির্ধারণ করা

Route::post('/submit', [MyController::class, 'store']);

কন্ট্রোলার তৈরি করা

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class MyController extends Controller
{
    public function store(Request $request)
    {
        // ভ্যালিডেশন লজিক এখানে হবে
    }
}

৩. ভ্যালিডেশন লজিক লেখা

ভ্যালিডেশন লজিক সাধারণত কন্ট্রোলারের store মেথডে লেখা হয়।

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

    // প্রাপ্ত ডেটা প্রক্রিয়া
}

৪. ভ্যালিডেশন ত্রুটি প্রদর্শন

যদি ইনপুট ভ্যালিডেশন ব্যর্থ হয়, লারাভেল স্বয়ংক্রিয়ভাবে ত্রুটি তথ্য পাঠাবে। Blade টেমপ্লেটে এটি প্রদর্শনের জন্য নিচের কোড ব্যবহার করুন:

@if ($errors->any())
    <div>
        <ul>
            @foreach ($errors->all() as $error)
                <li>{{ $error }}</li>
            @endforeach
        </ul>
    </div>
@endif

৫. ফর্ম রিপপুলেটিং

যখন ভ্যালিডেশন ব্যর্থ হয়, পূর্ববর্তী ইনপুটগুলি ফিরে আনতে old() ফাংশন ব্যবহার করতে পারেন।

<input type="text" name="name" value="{{ old('name') }}">

৬. অপশনাল ফিল্ড

কিছু ফিল্ড অপশনাল হলে, সেগুলোর জন্য nullable নিয়ম ব্যবহার করুন:

'address' => 'nullable|max:255',

৭. ভ্যালিডেশন ত্রুটি প্রতিক্রিয়া ফরম্যাট

লারেরভেল JSON রেসপন্স হিসাবে ভ্যালিডেশন ত্রুটি প্রদান করে। যদি AJAX কল হয়, তবে JSON ফরম্যাটে ত্রুটি তথ্য পাবেন।

{
    "message": "The given data was invalid.",
    "errors": {
        "name": ["The name field is required."]
    }
}

৮. ফর্ম রিকোয়েস্ট ভ্যালিডেশন

ফর্ম রিকোয়েস্ট ব্যবহারের জন্য একটি নতুন ক্লাস তৈরি করুন।

ফর্ম রিকোয়েস্ট তৈরি করা

php artisan make:request StoreUserRequest

অনুমোদন

public function authorize()
{
    return true; // বা আপনার কাস্টম অনুমোদন লজিক
}

ত্রুটি বার্তা কাস্টমাইজ করা

public function messages()
{
    return [
        'name.required' => 'নাম প্রয়োজন।',
    ];
}

৯. ইনপুট প্রস্তুতির জন্য প্রস্তুতি

protected function prepareForValidation()
{
    $this->merge([
        'name' => trim($this->name),
    ]);
}

১০. ম্যানুয়ালি ভ্যালিডেটর তৈরি করা

$validator = Validator::make($data, [
    'name' => 'required|max:255',
]);

১১. স্বয়ংক্রিয় রিডাইরেকশন

ডিফল্টভাবে, যদি ভ্যালিডেশন ব্যর্থ হয়, লারাভেল স্বয়ংক্রিয়ভাবে আগের পৃষ্ঠায় রিডাইরেক্ট করে।

১২. নামকৃত ত্রুটি ব্যাগ

নামকৃত ত্রুটি ব্যাগের মাধ্যমে আপনি ত্রুটি গুলিকে গ্রুপ করতে পারেন।

return redirect()->back()->withErrors($validator, 'login');

১৩. কাস্টম ত্রুটি বার্তা

আপনার কাস্টম বার্তা ল্যাঙ্গুয়েজ ফাইলের মাধ্যমে নির্ধারণ করতে পারেন।

// resources/lang/en/validation.php
return [
    'custom' => [
        'name' => [
            'required' => 'নাম ক্ষেত্রটি প্রয়োজন।',
        ],
    ],
];

১৪. উপলব্ধ ভ্যালিডেশন নিয়ম

লারাভেল বিভিন্ন ভ্যালিডেশন নিয়ম প্রদান করে, যেমন required, email, max, min, unique, ইত্যাদি।

১৫. শর্তাধীন নিয়ম যোগ করা

$rules['address'] = 'required_if:status,active';

১৬. অ্যারে ভ্যালিডেশন

আপনি ইনপুট অ্যারে ভ্যালিডেট করতে পারেন।

$rules = [
    'items.*.name' => 'required|max:255',
];

১৭. নেস্টেড অ্যারে ইনপুট ভ্যালিডেশন

নেস্টেড ইনপুটগুলির জন্য ভ্যালিডেশন:

$rules = [
    'products.*.options.*.value' => 'required',
];

১৮. ত্রুটি বার্তার সূচক ও অবস্থান

আপনি ত্রুটি বার্তা কাস্টমাইজ করতে পারেন সূচক এবং অবস্থানের মাধ্যমে।

১৯. ফাইল ভ্যালিডেশন

আপনার ফাইল আপলোডের জন্য ভ্যালিডেশন নিয়ম যুক্ত করতে পারেন।

$rules = [
    'file' => 'required|file|mimes:jpg,png|max:2048', // 2MB এর বেশি নয়
];

২০. পাসওয়ার্ড ভ্যালিডেশন

পাসওয়ার্ডের জন্য শক্তিশালী ভ্যালিডেশন:

$rules = [
    'password' => 'required|min:8|confirmed',
];

২১. কাস্টম ভ্যালিডেশন নিয়ম

আপনার কাস্টম নিয়ম তৈরি করতে পারেন:

Validator::extend('custom_rule', function ($attribute, $value, $parameters, $validator) {
    return $value === 'custom_value';
});

২২. রুল অবজেক্ট ব্যবহার করা

আপনার ভ্যালিডেশন নিয়মগুলি Rule অবজেক্ট ব্যবহার করে কাস্টমাইজ করতে পারেন।

use Illuminate\Validation\Rule;

$rules = [
    'email' => [
        'required',
        'email',
        Rule::unique('users')->ignore($userId),
    ],
];

২৩. ক্লোজার ব্যবহার করা

ভ্যালিডেশন লজিকে ক্লোজার ব্যবহার করে শর্ত যুক্ত করতে পারেন।

$validator = Validator::make($data, [
    'name' => [
        'required',
        function ($attribute, $value, $fail) {
            if ($value === 'admin') {
                $fail('নামটি admin হতে পারে না।');
            }
        },
    ],
]);

২৪. ইম্প্লিসিট রুলস

লারাভেলের মধ্যে ইম্প্লিসিট রুলস তৈরি করতে পারেন। উদাহরণস্বরূপ, ইনপুটের প্রয়োজনীয়তা নিশ্চিত করতে।

উপসংহার

লারাভেল ভ্যালিডেশন একটি শক্তিশালী ফিচার, যা ডেটা নিরাপত্তা ও সঠিকতা নিশ্চিত করে। এই বৈশিষ্ট্যগুলি ব্যবহার করে আপনার অ্যাপ্লিকেশনকে আরও শক্তিশালী এবং ব্যবহারকারী-বান্ধব করতে পারেন। কোনো বিশেষ ফিচার বা উদাহরণের উপর আরও বিস্তারিত জানতে চাইলে জানাবেন!

Content added By
Promotion