Symfony-এর ফর্ম হ্যান্ডলিং সিস্টেম একটি শক্তিশালী বৈশিষ্ট্য, যা ফর্মের ডেটা সংগ্রহ এবং ভ্যালিডেশন সহজ এবং কার্যকর করে তোলে। ফর্ম ভ্যালিডেশন সিস্টেম ব্যবহার করে আপনি ফর্ম ডেটা যাচাই করতে পারেন এবং ব্যবহারকারীকে সঠিক ইনপুট দিতে উৎসাহিত করতে পারেন। কনস্ট্রেইন্টস (Constraints) Symfony-এর ফর্ম ভ্যালিডেশনের মূল উপাদান, যা বিভিন্ন ধরণের ইনপুট যাচাই করতে ব্যবহৃত হয়, যেমন টেক্সট ফিল্ড, ডেটা ফিল্ড, ইমেইল, নম্বর ইত্যাদি।
ফর্ম ভ্যালিডেশন (Form Validation)
Symfony-এর ফর্ম ভ্যালিডেশন সিস্টেম আপনাকে ডেটা যাচাই করার জন্য একাধিক কনস্ট্রেইন্ট ব্যবহারের সুবিধা দেয়। এটি ফর্ম এবং ডোমেন মডেল দুটির উপর প্রযোজ্য হতে পারে। Symfony একটি ক্লিন এবং সহজ ভ্যালিডেশন ব্যবস্থা প্রদান করে, যা ডেভেলপারদের প্রয়োজনীয় লজিক এবং কনস্ট্রেইন্টস ব্যবহার করতে সক্ষম করে।
ফর্ম ভ্যালিডেশন কনফিগারেশন
ফর্মে ভ্যালিডেশন কনস্ট্রেইন্ট ব্যবহার করতে, Form Type ক্লাসে কনস্ট্রেইন্ট যুক্ত করা হয়।
Form Type উদাহরণ:
namespace App\Form;
use App\Entity\Person;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\Extension\Core\Type\IntegerType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Validator\Constraints\NotBlank;
use Symfony\Component\Validator\Constraints\Length;
use Symfony\Component\Validator\Constraints\Range;
class PersonType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('name', TextType::class, [
'constraints' => [
new NotBlank(['message' => 'Name cannot be blank.']),
new Length(['min' => 3, 'max' => 50, 'minMessage' => 'Name must be at least {{ limit }} characters long.'])
]
])
->add('age', IntegerType::class, [
'constraints' => [
new Range(['min' => 18, 'max' => 100, 'notInRangeMessage' => 'Age must be between {{ min }} and {{ max }}.'])
]
])
;
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'data_class' => Person::class,
]);
}
}
এখানে, name ফিল্ডে দুটি কনস্ট্রেইন্ট যোগ করা হয়েছে:
NotBlank– এই ফিল্ডটি শূন্য থাকতে পারবে না।Length– নামের দৈর্ঘ্য ৩ থেকে ৫০ অক্ষরের মধ্যে থাকতে হবে।
age ফিল্ডের জন্য Range কনস্ট্রেইন্ট ব্যবহার করা হয়েছে, যা নিশ্চিত করে যে বয়স ১৮ থেকে ১০০ এর মধ্যে থাকবে।
কনস্ট্রেইন্টস (Constraints)
Symfony ফর্ম ভ্যালিডেশনের জন্য বিভিন্ন ধরনের কনস্ট্রেইন্ট প্রদান করে, যেগুলি ডেটার বিভিন্ন দিক যাচাই করতে সাহায্য করে। কিছু সাধারণ কনস্ট্রেইন্ট হল:
NotBlank
ফিল্ডটি খালি থাকতে পারে না।new NotBlank(['message' => 'This field cannot be blank.'])Length
একটি স্ট্রিং বা টেক্সট ফিল্ডের দৈর্ঘ্য নির্দিষ্ট সীমার মধ্যে থাকতে হবে।new Length(['min' => 3, 'max' => 50])Email
ইমেইল ফিল্ডের জন্য ভ্যালিড ইমেইল ঠিকানা থাকতে হবে।new Email(['message' => 'Please enter a valid email address.'])Range
একটি সংখ্যার মান নির্দিষ্ট রেঞ্জের মধ্যে থাকতে হবে।new Range(['min' => 18, 'max' => 100])Regex
একটি স্ট্রিং বিশেষ কোনো রেগুলার এক্সপ্রেশন (regex) মেনে চলতে হবে।new Regex(['pattern' => '/^[a-zA-Z]+$/', 'message' => 'Only letters are allowed.'])Choice
ফিল্ডে প্রাপ্ত মান একটি নির্দিষ্ট তালিকার মানগুলির মধ্যে থাকতে হবে।new Choice(['choices' => ['red', 'green', 'blue'], 'message' => 'Invalid color choice.'])- Unique
ডাটাবেসে ইউনিক মানের জন্য যাচাই করা (এটি সাধারণত ডাটাবেস স্তরে করা হয়)।
ফর্ম ভ্যালিডেশন কাস্টম কনস্ট্রেইন্টস
আপনি যদি বিশেষ ধরনের ভ্যালিডেশন করতে চান, তবে Symfony-তে কাস্টম কনস্ট্রেইন্ট তৈরি করা যায়। কাস্টম কনস্ট্রেইন্ট তৈরি করতে আপনাকে কনস্ট্রেইন্ট ক্লাস, ভ্যালিডেটর ক্লাস এবং কনস্ট্রেইন্ট ভ্যালিডেটরের জন্য কাস্টম লজিক তৈরি করতে হয়।
কাস্টম কনস্ট্রেইন্ট উদাহরণ:
কনস্ট্রেইন্ট ক্লাস:
// src/Validator/Constraints/ValidAge.php namespace App\Validator\Constraints; use Symfony\Component\Validator\Constraint; /** * @Annotation */ class ValidAge extends Constraint { public $message = 'The age "{{ value }}" is not a valid age.'; }ভ্যালিডেটর ক্লাস:
// src/Validator/Constraints/ValidAgeValidator.php namespace App\Validator\Constraints; use Symfony\Component\Validator\Constraint; use Symfony\Component\Validator\ConstraintValidator; use Symfony\Component\Validator\Exception\UnexpectedTypeException; use Symfony\Component\Validator\Exception\UnexpectedValueException; class ValidAgeValidator extends ConstraintValidator { public function validate($value, Constraint $constraint) { if (!$constraint instanceof ValidAge) { throw new UnexpectedTypeException($constraint, ValidAge::class); } if ($value < 18 || $value > 100) { $this->context->buildViolation($constraint->message) ->setParameter('{{ value }}', $value) ->addViolation(); } } }ফর্মে কাস্টম কনস্ট্রেইন্ট ব্যবহার:
use App\Validator\Constraints\ValidAge; $builder->add('age', IntegerType::class, [ 'constraints' => [ new ValidAge(), ] ]);
এখানে ValidAge কাস্টম কনস্ট্রেইন্ট তৈরি করা হয়েছে, যা নিশ্চিত করবে যে বয়স ১৮ থেকে ১০০ এর মধ্যে থাকে।
ফর্মের ভ্যালিডেশন বার্তা কাস্টমাইজেশন
Symfony ফর্ম ভ্যালিডেশনে কনস্ট্রেইন্ট ভায়োলেশনের বার্তা কাস্টমাইজ করা যায়। বার্তা কাস্টমাইজ করতে আপনি messages বিকল্প ব্যবহার করতে পারেন। এছাড়াও, আপনি ভাষার ভিত্তিতে বার্তা প্রদান করতে পারেন।
উদাহরণ:
# config/translation/validators.en.yaml
This value should not be blank: This field cannot be empty.
সারাংশ
Symfony ফর্ম ভ্যালিডেশন সিস্টেম একটি শক্তিশালী এবং কাস্টমাইজেবল পদ্ধতি প্রদান করে, যা ডেটার ইনপুট যাচাই করতে এবং ব্যবহারকারীদের সঠিক ফর্ম সাবমিশন নিশ্চিত করতে সাহায্য করে। কনস্ট্রেইন্টস এর মাধ্যমে আপনি বিভিন্ন ধরনের ডেটা যাচাই করতে পারেন, যেমন: NotBlank, Length, Email, Range, Regex ইত্যাদি। Symfony-এর ফর্ম ভ্যালিডেশন ব্যবস্থা ডেভেলপারদের দ্রুত এবং নিরাপদ ফর্ম তৈরি করতে সহায়ক।
Read more