Yii ফ্রেমওয়ার্কে Custom Validation এবং Error Messages কাস্টম ভ্যালিডেশন লজিক তৈরি করতে এবং ব্যবহারকারীদের জন্য স্পষ্ট, কাস্টমাইজড ত্রুটি বার্তা প্রদানের জন্য গুরুত্বপূর্ণ উপাদান। Yii ফ্রেমওয়ার্কের ActiveRecord এবং Model ক্লাসগুলি আপনাকে ডেটা যাচাই এবং ত্রুটি বার্তা প্রদানে খুবই সহায়ক টুলস প্রদান করে।
Custom Validation
Yii ফ্রেমওয়ার্কে Custom Validation সাধারণত Model ক্লাসে ব্যবহার করা হয়, যেখানে আপনি নিজস্ব ভ্যালিডেশন ফাংশন তৈরি করতে পারেন। Yii-তে ভ্যালিডেশন রুলস মূলত মডেল ক্লাসের মধ্যে ডিফাইন করা হয়।
১. Custom Validation রুলস তৈরি করা
আপনার মডেল ক্লাসে rules() মেথডের মধ্যে কাস্টম ভ্যালিডেশন রুল যুক্ত করতে হয়। Yii-তে Custom Validator তৈরির জন্য আপনি একটি ফাংশন লিখতে পারেন যা নির্দিষ্ট একটি ফিল্ডের ভ্যালিডেশন পরিচালনা করবে।
Custom Validation Example:
class User extends \yii\db\ActiveRecord
{
public $password_repeat; // পাসওয়ার্ডের পুনরাবৃত্তি ফিল্ড
public function rules()
{
return [
[['password', 'password_repeat'], 'required'],
['password', 'validatePassword'], // কাস্টম ভ্যালিডেটর
];
}
// কাস্টম পাসওয়ার্ড ভ্যালিডেটর
public function validatePassword($attribute, $params)
{
if ($this->password !== $this->password_repeat) {
$this->addError($attribute, 'পাসওয়ার্ড মিলছে না!');
}
}
}
এখানে password এবং password_repeat ফিল্ডের জন্য একটি কাস্টম ভ্যালিডেটর validatePassword ব্যবহার করা হয়েছে। এই ভ্যালিডেটরে যদি দুইটি পাসওয়ার্ড না মেলে, তাহলে addError() মেথড ব্যবহার করে একটি ত্রুটি বার্তা যুক্ত করা হয়।
২. Built-in Validators ব্যবহার
Yii ফ্রেমওয়ার্কে কিছু সাধারণ বিল্ট-ইন ভ্যালিডেটরও রয়েছে, যেমন:
- required: ফিল্ডটি অবশ্যই পূর্ণ হতে হবে।
- email: ইমেইল ঠিকানা যাচাই করে।
- url: URL ফর্ম্যাট যাচাই করে।
- string: স্ট্রিংয়ের দৈর্ঘ্য যাচাই করে।
আপনি এসব বিল্ট-ইন ভ্যালিডেটর এবং কাস্টম ভ্যালিডেটরের সংমিশ্রণও ব্যবহার করতে পারেন।
Error Messages
Yii ফ্রেমওয়ার্কে Error Messages হল সেই বার্তা যা ব্যবহারকারীকে একটি নির্দিষ্ট ফিল্ডের ভুল ইনপুটের জন্য দেখানো হয়। আপনি নিজস্ব ত্রুটি বার্তা কাস্টমাইজ করতে পারেন যা ব্যবহারকারীর জন্য আরও স্পষ্ট এবং সহায়ক হবে।
১. Error Messages কাস্টমাইজেশন
এটি আপনি addError() মেথডের মাধ্যমে করতে পারেন, যেমন আমরা পূর্বের উদাহরণে দেখেছি। ত্রুটি বার্তাগুলি কাস্টমাইজ করতে, আপনি নিজস্ব বার্তা পাঠাতে পারবেন।
Custom Error Message Example:
public function validatePassword($attribute, $params)
{
if ($this->password !== $this->password_repeat) {
$this->addError($attribute, 'পাসওয়ার্ড দুটি মেলেনি, দয়া করে আবার পরীক্ষা করুন!');
}
}
২. Error Message Language Customization
Yii-তে আপনি ত্রুটি বার্তাগুলি ভাষানুসারে কাস্টমাইজ করতে পারেন। Yii i18n (internationalization) সিস্টেম ব্যবহার করে মাল্টি-ল্যাঙ্গুয়েজ ত্রুটি বার্তা প্রদানের সুবিধা দেয়।
আপনি messages ফোল্ডারে ত্রুটি বার্তাগুলি কাস্টমাইজ করতে পারেন। যেমন:
messages/
en-US/
app.php
bn-BD/
app.php
এখানে আপনি ইংরেজি এবং বাংলা ভাষার জন্য আলাদা আলাদা ত্রুটি বার্তা সংরক্ষণ করতে পারেন।
বাংলা ত্রুটি বার্তা উদাহরণ (messages/bn-BD/app.php):
return [
'Required field' => 'এটি একটি আবশ্যক ক্ষেত্র',
'Password mismatch' => 'পাসওয়ার্ড দুটি মেলেনি',
];
৩. Default Error Messages
Yii কিছু ডিফল্ট ত্রুটি বার্তা প্রদান করে, যেমন:
'This value is invalid.': যদি ইনপুট ভ্যালিডেশন ব্যর্থ হয়।'This field cannot be blank.': যদি একটি আবশ্যক ফিল্ড ফাঁকা থাকে।'The value "{value}" is not a valid {attribute}.': যদি ইনপুটটি নির্দিষ্ট ধরনের না হয় (যেমন, ইমেইল বা URL)।
আপনি চাইলে এই ডিফল্ট বার্তাগুলিকে yii\base\DynamicModel ক্লাস ব্যবহার করে কাস্টমাইজ করতে পারেন।
Error Message Display
এখন আপনি যখন একটি মডেল ইনস্ট্যান্স ভ্যালিডেট করবেন, তখন ত্রুটি বার্তা মডেল থেকে বের করে, ভিউতে প্রদর্শন করা হবে। নিচের মতো:
$model = new User();
if ($model->load(Yii::$app->request->post()) && $model->validate()) {
// সঠিক ইনপুট
} else {
// ত্রুটি বার্তা প্রদর্শন
foreach ($model->errors as $error) {
echo $error[0]; // প্রথম ত্রুটি বার্তা দেখানো হবে
}
}
এখানে $model->errors অ্যারে তে সমস্ত ত্রুটি বার্তা থাকবে এবং আপনি এগুলি লুপের মাধ্যমে ভিউতে প্রদর্শন করতে পারবেন।
সারাংশ
- Custom Validation আপনাকে মডেল ক্লাসে নিজের ভ্যালিডেশন রুল তৈরি করার সুযোগ দেয়, যেমন পাসওয়ার্ড মিলানো বা অন্য কোন কাস্টম চেক করা।
- Error Messages ব্যবহারকারীকে পরিষ্কার, কাস্টম বার্তা প্রদানে সহায়ক, এবং আপনি Yii-র built-in ত্রুটি বার্তা অথবা নিজস্ব বার্তা কাস্টমাইজ করতে পারেন।
- Yii ফ্রেমওয়ার্কের i18n সিস্টেমের মাধ্যমে আপনি ত্রুটি বার্তা বিভিন্ন ভাষায় কাস্টমাইজ করতে পারবেন।
- Yii ত্রুটি বার্তাগুলি প্রদর্শন করার জন্য সরল এবং কার্যকর উপায় প্রদান করে যা ডেভেলপারদের জন্য অনেক সাহায্যকারী।
এভাবে আপনি Yii ফ্রেমওয়ার্কে কাস্টম ভ্যালিডেশন এবং ত্রুটি বার্তা ব্যবহার করে আরও উন্নত ও ব্যবহারকারীর জন্য সহজ বান্ধব ওয়েব অ্যাপ্লিকেশন তৈরি করতে পারেন।