FuelPHP একটি শক্তিশালী PHP ফ্রেমওয়ার্ক যা দ্রুত এবং নিরাপদ ওয়েব অ্যাপ্লিকেশন তৈরি করতে সহায়তা করে। এর মধ্যে একটি গুরুত্বপূর্ণ ফিচার হল Form Validation, যা ব্যবহারকারীর ইনপুট ডেটা যাচাই করার জন্য ব্যবহৃত হয়। FuelPHP এ Form Validation খুবই সহজ এবং শক্তিশালী, এবং এটি Custom Validation Rules তৈরি করার সুবিধাও প্রদান করে।
এখানে Form Validation এবং Custom Validation Rules নিয়ে বিস্তারিত আলোচনা করা হয়েছে:
1. FuelPHP এ Form Validation
Form Validation হল ব্যবহারকারীর দ্বারা ইনপুট করা ডেটা যাচাই করার প্রক্রিয়া। FuelPHP তে, ইনপুট ডেটার ভ্যালিডেশন করার জন্য একটি নির্দিষ্ট Validation ক্লাস ব্যবহৃত হয়, যা প্রি-ডিফাইনড নিয়ম (যেমন: ইমেল ভ্যালিডেশন, পাসওয়ার্ড চেক) এবং কাস্টম রুলস উভয়ই সাপোর্ট করে।
FuelPHP Form Validation Basic Example:
- Controller: ইনপুট ডেটা ভ্যালিডেট করা এবং ফলাফল দেখানো।
// fuel/app/classes/controller/form.php
class Controller_Form extends Controller
{
public function action_index()
{
if (Input::method() == 'POST') {
// Form validation rules
$val = Validation::forge();
$val->add('name', 'Name')
->add_rule('required')
->add_rule('min_length', 3)
->add_rule('max_length', 50);
$val->add('email', 'Email')
->add_rule('required')
->add_rule('valid_email');
// Run validation
if ($val->run()) {
// Success: Process form data
$data = Input::post();
return Response::forge(View::forge('form/success', $data));
} else {
// Failure: Display validation errors
return Response::forge(View::forge('form/index', ['errors' => $val->error()]));
}
}
return View::forge('form/index');
}
}
- View: Form এবং এর validation errors দেখানো।
// fuel/app/views/form/index.php
<form action="" method="POST">
<label for="name">Name:</label>
<input type="text" name="name" id="name" value="<?php echo Input::post('name'); ?>" />
<?php if (isset($errors['name'])): ?>
<div class="error"><?php echo $errors['name']; ?></div>
<?php endif; ?>
<label for="email">Email:</label>
<input type="email" name="email" id="email" value="<?php echo Input::post('email'); ?>" />
<?php if (isset($errors['email'])): ?>
<div class="error"><?php echo $errors['email']; ?></div>
<?php endif; ?>
<button type="submit">Submit</button>
</form>
- Form Success View: যদি ফর্ম ভ্যালিড হয়ে যায়, তখন এটি সফলভাবে প্রক্রিয়া করা হয়।
// fuel/app/views/form/success.php
<h1>Form Submitted Successfully</h1>
<p>Name: <?php echo $name; ?></p>
<p>Email: <?php echo $email; ?></p>
এখানে:
- Validation ক্লাসে add_rule() ব্যবহার করে ফর্ম ফিল্ডের জন্য বিভিন্ন ভ্যালিডেশন রুলস নির্ধারণ করা হয়েছে।
run()মেথড ব্যবহার করে ভ্যালিডেশন চালানো হচ্ছে। যদি সমস্ত ফিল্ড সঠিক হয়, তবে ফর্মটি প্রসেস করা হবে, অন্যথায় error প্রদর্শিত হবে।
2. Custom Validation Rules in FuelPHP
Custom Validation Rules হল বিশেষ শর্তাবলী যা আপনি নিজের প্রয়োজন অনুযায়ী তৈরি করতে পারেন। FuelPHP এর Validation ক্লাস কাস্টম রুল তৈরি করতে add_rule() মেথডের মাধ্যমে callback ফাংশন ব্যবহার করার সুযোগ দেয়।
Custom Validation Rule Example:
ধরা যাক, আপনি একটি কাস্টম রুল তৈরি করতে চান যা নিশ্চিত করবে যে পাসওয়ার্ডটি কমপ্লেক্স এবং অন্তত একটি বিশেষ চরিত্র রয়েছে।
- Controller: কাস্টম রুল ব্যবহার করা।
// fuel/app/classes/controller/form.php
class Controller_Form extends Controller
{
public function action_index()
{
if (Input::method() == 'POST') {
// Create validation object
$val = Validation::forge();
// Adding form fields and rules
$val->add('password', 'Password')
->add_rule('required')
->add_rule('min_length', 8)
->add_rule('check_complex_password'); // Custom rule
// Run the validation
if ($val->run()) {
// Success: Process form data
$data = Input::post();
return Response::forge(View::forge('form/success', $data));
} else {
// Failure: Display validation errors
return Response::forge(View::forge('form/index', ['errors' => $val->error()]));
}
}
return View::forge('form/index');
}
}
- Custom Validation Rule Implementation:
// fuel/app/classes/validation/validation.php
Validation::register('check_complex_password', function($field, $value, $parameters) {
// Custom rule to check password complexity
if (!preg_match('/[A-Za-z]/', $value) || !preg_match('/[0-9]/', $value) || !preg_match('/[\W_]/', $value)) {
return 'Password must include letters, numbers, and special characters';
}
return true;
});
এখানে:
- check_complex_password একটি কাস্টম রুল তৈরি করা হয়েছে যা নিশ্চিত করে যে পাসওয়ার্ডে কমপ্লেক্সিটি আছে, অর্থাৎ, এতে অক্ষর, সংখ্যা এবং বিশেষ চরিত্র থাকতে হবে।
- Validation::register() ব্যবহার করে এই কাস্টম রুলটি FuelPHP তে নিবন্ধিত করা হয়।
- View: কাস্টম রুলের জন্য ভ্যালিডেশন ফিডব্যাক দেখানো।
// fuel/app/views/form/index.php
<form action="" method="POST">
<label for="password">Password:</label>
<input type="password" name="password" id="password" />
<?php if (isset($errors['password'])): ?>
<div class="error"><?php echo $errors['password']; ?></div>
<?php endif; ?>
<button type="submit">Submit</button>
</form>
এখানে:
- check_complex_password কাস্টম রুলের মাধ্যমে পাসওয়ার্ড যাচাই করা হচ্ছে এবং যদি এটি ভুল হয়, তবে একটি কাস্টম এরর মেসেজ দেখানো হবে।
3. Additional FuelPHP Validation Features
Chaining Rules:
- FuelPHP আপনাকে একাধিক ভ্যালিডেশন রুল একসাথে চেইন করতে সহায়তা করে। যেমন,
min_length,max_length,valid_emailইত্যাদি।
$val->add('email', 'Email') ->add_rule('required') ->add_rule('valid_email');- FuelPHP আপনাকে একাধিক ভ্যালিডেশন রুল একসাথে চেইন করতে সহায়তা করে। যেমন,
Validation Errors:
- আপনি $val->error() ব্যবহার করে সমস্ত ভ্যালিডেশন এররগুলো পাবেন এবং তা ভিউতে প্রদর্শন করতে পারবেন।
if ($val->run()) { // Success } else { echo $val->error('email'); }Form Persistence:
- FuelPHP Input::post() ব্যবহার করে ফর্মের ডেটা প্রেরণ করে এবং ফর্ম ভ্যালিডেশনের পর এটি আবার ব্যবহারকারীর কাছে দেখানোর জন্য ব্যবহৃত হতে পারে।
<input type="text" name="email" value="<?php echo Input::post('email'); ?>" />- Field Customization:
- আপনি ফিল্ডের নাম এবং বার্তা কাস্টমাইজ করতে পারেন, যেমন
validation::forge()এ ডেটার জন্য লেবেল বা নির্দিষ্ট বার্তা প্রদর্শন করা।
- আপনি ফিল্ডের নাম এবং বার্তা কাস্টমাইজ করতে পারেন, যেমন
সারাংশ:
FuelPHP তে Form Validation অত্যন্ত সহজ এবং শক্তিশালী। FuelPHP তে আপনি প্রি-বিল্ট রুলস ব্যবহার করতে পারেন এবং নিজের কাস্টম রুল তৈরি করতে পারেন। এর মাধ্যমে আপনি ব্যবহারকারীর ইনপুট সঠিকতা যাচাই করতে পারেন এবং ত্রুটির ক্ষেত্রে ব্যবহারকারীদের সঠিক ফিডব্যাক দিতে পারেন। FuelPHP তে Custom Validation Rules তৈরি করা খুবই সহজ, এবং এটি আপনার অ্যাপ্লিকেশনের নিরাপত্তা এবং ডেটার সঠিকতা নিশ্চিত করতে সহায়ক।
Read more