Validators এর মাধ্যমে Custom Rules প্রয়োগ করা

SQLAlchemy তে Custom Data Types এবং Validators - এসকিউএল অ্যালকেমি (SQLAlchemy) - Database Tutorials

342

Laravel এ validators ব্যবহার করা হয় ব্যবহারকারীর ইনপুট ভ্যালিডেশন নিশ্চিত করার জন্য। কখনো কখনো আপনাকে কাস্টম ভ্যালিডেশন রুলস তৈরি করতে হতে পারে, যা Laravel এর ডিফল্ট ভ্যালিডেশন রুলস থেকে ভিন্ন। Laravel এ কাস্টম ভ্যালিডেশন রুল তৈরি করতে Validator ক্লাস বা কাস্টম রুল ক্লাস ব্যবহার করা যেতে পারে। এখানে দেখানো হবে কীভাবে কাস্টম ভ্যালিডেশন রুল তৈরি এবং প্রয়োগ করা যায়।


কাস্টম ভ্যালিডেশন রুল তৈরি করার পদ্ধতি

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

Laravel এ কাস্টম ভ্যালিডেশন রুল তৈরি করার জন্য একটি নতুন রুল ক্লাস তৈরি করা যায়। এই ক্লাসে passes() এবং message() মেথড দুটি থাকতে হবে। passes() মেথডটি যাচাই করবে যে ইনপুটটি বৈধ কিনা এবং message() মেথডটি যখন ভ্যালিডেশন ব্যর্থ হয়, তখন ব্যবহারকারীকে কী বার্তা দেখানো হবে তা নির্ধারণ করবে।

উদাহরণ:
php artisan make:rule Uppercase

এটি app/Rules/Uppercase.php ফাইলটি তৈরি করবে। এখন, এই ফাইলের মধ্যে কাস্টম রুল কোড যোগ করা যাবে:

namespace App\Rules;

use Illuminate\Contracts\Validation\Rule;

class Uppercase implements Rule
{
    /**
     * প্রাপ্ত ইনপুটটি বৈধ কিনা তা চেক করুন।
     *
     * @param  string  $attribute
     * @param  mixed  $value
     * @return bool
     */
    public function passes($attribute, $value)
    {
        // চেক করুন যে ইনপুটটি uppercase কিনা
        return strtoupper($value) === $value;
    }

    /**
     * যদি ভ্যালিডেশন ব্যর্থ হয়, তবে প্রদর্শনযোগ্য বার্তা।
     *
     * @return string
     */
    public function message()
    {
        return 'The :attribute must be uppercase.';
    }
}

এই কোডে, passes() মেথডে চেক করা হচ্ছে যে ইনপুটটি সম্পূর্ণ uppercase কি না। যদি না হয়, তাহলে message() মেথডটি ব্যবহারকারীকে একটা সঠিক বার্তা পাঠাবে।


২. কাস্টম রুল ব্যবহার করা

এখন, কাস্টম রুলটি ব্যবহার করা যেতে পারে ফর্ম ভ্যালিডেশনের মধ্যে। উদাহরণস্বরূপ, যদি আপনি নিশ্চিত করতে চান যে একটি ফিল্ডের মান uppercase, তাহলে আপনি কাস্টম রুলটি ভ্যালিডেশনে ব্যবহার করবেন।

use App\Rules\Uppercase;

$request->validate([
    'name' => ['required', new Uppercase],
]);

এখানে name ফিল্ডের জন্য কাস্টম Uppercase রুল প্রয়োগ করা হয়েছে।


৩. কাস্টম রুল এর জন্য অ্যারে সিনট্যাক্স ব্যবহার করা

Laravel তে একাধিক কাস্টম রুল একত্রে ব্যবহার করা সম্ভব। আপনি যদি একাধিক রুল ব্যবহার করতে চান, তবে এগুলো একটি অ্যারেতে সংজ্ঞায়িত করতে পারেন:

use App\Rules\Uppercase;

$request->validate([
    'name' => ['required', 'string', new Uppercase],
]);

এখানে name ফিল্ডের জন্য required, string, এবং Uppercase কাস্টম রুল একত্রে প্রয়োগ করা হয়েছে।


কাস্টম মেসেজ কাস্টমাইজ করা

Laravel এর ডিফল্ট ভ্যালিডেশন মেসেজ পরিবর্তন করার জন্য, আপনি lang ফোল্ডারে ভ্যালিডেশন মেসেজ কাস্টমাইজ করতে পারেন। resources/lang/en/validation.php ফাইলটি খুলুন এবং সেখানে আপনার কাস্টম মেসেজ যুক্ত করুন।

return [
    'custom' => [
        'name' => [
            'uppercase' => 'The name field must be all uppercase letters.',
        ],
    ],
];

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


কাস্টম রুল ব্যবহার করে অন্যান্য উদাহরণ

১. ইমেইল ডোমেইন ভ্যালিডেশন:

ধরা যাক, আপনি চান যে ব্যবহারকারীর ইমেইল ঠিকানায় একটি নির্দিষ্ট ডোমেইন থাকতে হবে, যেমন @example.com:

php artisan make:rule EmailDomain
namespace App\Rules;

use Illuminate\Contracts\Validation\Rule;

class EmailDomain implements Rule
{
    public function passes($attribute, $value)
    {
        return str_ends_with($value, '@example.com');
    }

    public function message()
    {
        return 'The :attribute must be a valid email address with @example.com domain.';
    }
}

এখন এই রুল ব্যবহার করুন:

use App\Rules\EmailDomain;

$request->validate([
    'email' => ['required', 'email', new EmailDomain],
]);

সারাংশ

Laravel এ কাস্টম ভ্যালিডেশন রুল তৈরি এবং প্রয়োগ করার মাধ্যমে আপনি আপনার অ্যাপ্লিকেশনে নির্দিষ্ট চাহিদা অনুসারে ইনপুট ভ্যালিডেশন পরিচালনা করতে পারেন। কাস্টম রুলের মাধ্যমে আপনি যেকোনো ধরনের জটিল লজিক প্রয়োগ করতে পারেন যা ডিফল্ট ভ্যালিডেশন রুলগুলো দিয়ে করা সম্ভব নয়।

Content added By
Promotion

Are you sure to start over?

Loading...