CodeIgniter এ Form Handling এবং Validation ওয়েব ফর্ম থেকে ডেটা সংগ্রহ করা, প্রক্রিয়া করা এবং সঠিকতা যাচাই করার জন্য ব্যবহৃত হয়। এটি ব্যবহারকারীর ভুল ইনপুট প্রতিরোধে এবং নিরাপত্তা নিশ্চিত করতে সাহায্য করে।
CodeIgniter এ HTML ফর্ম তৈরি করা সাধারণ HTML এর মতোই। উদাহরণস্বরূপ:
<form action="/form/submit" method="post">
<label for="name">Name:</label>
<input type="text" id="name" name="name">
<label for="email">Email:</label>
<input type="email" id="email" name="email">
<button type="submit">Submit</button>
</form>
Controller এ request
ব্যবহার করে ফর্ম ডেটা সংগ্রহ করা যায়:
namespace App\Controllers;
class Form extends BaseController
{
public function submit()
{
// ফর্ম ডেটা গ্রহণ
$name = $this->request->getPost('name');
$email = $this->request->getPost('email');
// ডেটা প্রসেস বা স্টোর করুন
return "Name: $name, Email: $email";
}
}
CodeIgniter এর Validation Library ফর্ম ডেটার সঠিকতা যাচাই করার একটি শক্তিশালী টুল। এটি ইনপুট ডেটার নির্ধারিত নিয়মের সাথে মিল আছে কিনা তা পরীক্ষা করে।
Controller এ Validation Rules নির্ধারণ করতে validate()
মেথড ব্যবহার করা হয়:
use CodeIgniter\Controller;
class Form extends BaseController
{
public function submit()
{
$validation = $this->validate([
'name' => 'required|min_length[3]|max_length[50]',
'email' => 'required|valid_email'
]);
if (!$validation) {
// ভ্যালিডেশন ব্যর্থ হলে
return redirect()->back()->withInput()->with('errors', $this->validator->getErrors());
}
// ভ্যালিডেশন সফল হলে
$name = $this->request->getPost('name');
$email = $this->request->getPost('email');
return "Name: $name, Email: $email";
}
}
Controller থেকে ভিউ-এ ভ্যালিডেশন ত্রুটি পাস করুন:
if (!$validation) {
return redirect()->back()->withInput()->with('errors', $this->validator->getErrors());
}
View ফাইলে ত্রুটি বার্তা প্রদর্শনের জন্য:
<?php if (session()->has('errors')): ?>
<ul>
<?php foreach (session('errors') as $error): ?>
<li><?php echo $error; ?></li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
ফর্ম সাবমিশন ব্যর্থ হলে পুরনো ইনপুট পুনরায় প্রদর্শন করতে old()
ফাংশন ব্যবহার করা হয়:
<form action="/form/submit" method="post">
<label for="name">Name:</label>
<input type="text" id="name" name="name" value="<?= old('name'); ?>">
<label for="email">Email:</label>
<input type="email" id="email" name="email" value="<?= old('email'); ?>">
<button type="submit">Submit</button>
</form>
আপনার নিজস্ব ভ্যালিডেশন রুল সংজ্ঞায়িত করতে app/Validation/CustomRules.php
ফাইল তৈরি করুন:
namespace App\Validation;
class CustomRules
{
public function valid_username(string $str, string $fields, array $data): bool
{
return preg_match('/^[a-zA-Z0-9]+$/', $str) === 1;
}
}
app/Config/Validation.php
ফাইলে Custom Rule যুক্ত করুন:
public $ruleSets = [
\CodeIgniter\Validation\Rules::class,
\App\Validation\CustomRules::class,
];
Controller এ Custom Rule প্রয়োগ করুন:
$validation = $this->validate([
'username' => 'required|valid_username'
]);
namespace App\Controllers;
class Form extends BaseController
{
public function submit()
{
$validation = $this->validate([
'name' => 'required|min_length[3]',
'email' => 'required|valid_email'
]);
if (!$validation) {
return redirect()->back()->withInput()->with('errors', $this->validator->getErrors());
}
return "Form submitted successfully!";
}
}
<form action="/form/submit" method="post">
<?php if (session()->has('errors')): ?>
<ul>
<?php foreach (session('errors') as $error): ?>
<li><?php echo $error; ?></li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
<label for="name">Name:</label>
<input type="text" id="name" name="name" value="<?= old('name'); ?>">
<label for="email">Email:</label>
<input type="email" id="email" name="email" value="<?= old('email'); ?>">
<button type="submit">Submit</button>
</form>
CodeIgniter এর Form Handling এবং Validation ব্যবহার করে সহজেই ফর্ম ডেটা সংগ্রহ, যাচাই, এবং প্রক্রিয়া করা যায়। এটি সঠিক ডেটা ব্যবহারের নিশ্চয়তা প্রদান করে এবং অ্যাপ্লিকেশনকে নিরাপদ ও ব্যবহারবান্ধব করে তোলে।
CodeIgniter ব্যবহার করে ফর্ম তৈরি এবং ডেটা সাবমিট করার প্রক্রিয়া খুবই সহজ এবং কার্যকর। CodeIgniter এর Form Helper এবং Validation Library ব্যবহার করে ফর্ম ডেটা সহজে প্রক্রিয়া এবং যাচাই করা যায়।
প্রথমে একটি Controller তৈরি করুন, যা ফর্ম ভিউ লোড করবে এবং ফর্ম ডেটা প্রক্রিয়া করবে।
namespace App\Controllers;
use CodeIgniter\Controller;
class FormController extends Controller {
public function index() {
return view('form_view');
}
public function submit() {
// ফর্ম ডেটা রিসিভ করুন
$name = $this->request->getPost('name');
$email = $this->request->getPost('email');
// ডেটা দেখান
echo "Name: " . esc($name) . "<br>";
echo "Email: " . esc($email);
}
}
app/Views/form_view.php
নামে একটি ফাইল তৈরি করুন এবং HTML ফর্ম কোড যোগ করুন:
<!DOCTYPE html>
<html>
<head>
<title>Form Example</title>
</head>
<body>
<h1>Fill the Form</h1>
<form action="<?= site_url('formcontroller/submit'); ?>" method="post">
<label for="name">Name:</label>
<input type="text" name="name" id="name" required><br><br>
<label for="email">Email:</label>
<input type="email" name="email" id="email" required><br><br>
<button type="submit">Submit</button>
</form>
</body>
</html>
app/Config/Routes.php
ফাইলে Controller এর জন্য রাউট যোগ করুন:
$routes->get('form', 'FormController::index');
$routes->post('formcontroller/submit', 'FormController::submit');
CodeIgniter এর Validation Library ব্যবহার করে ফর্ম ডেটা যাচাই করুন।
namespace App\Controllers;
use CodeIgniter\Controller;
class FormController extends Controller {
public function submit() {
$validation = \Config\Services::validation();
// ভ্যালিডেশন রুলস সেট করুন
$validation->setRules([
'name' => 'required|min_length[3]|max_length[50]',
'email' => 'required|valid_email'
]);
// ফর্ম ডেটা যাচাই করুন
if (!$validation->withRequest($this->request)->run()) {
// ভ্যালিডেশন ফেইল হলে
return view('form_view', ['validation' => $validation]);
}
// সফল হলে
$name = $this->request->getPost('name');
$email = $this->request->getPost('email');
echo "Name: " . esc($name) . "<br>";
echo "Email: " . esc($email);
}
}
form_view.php
ফাইলে নিচের কোড যোগ করুন:
<?php if (isset($validation)): ?>
<div style="color: red;">
<?= $validation->listErrors(); ?>
</div>
<?php endif; ?>
app/Models/FormModel.php
নামে একটি মডেল তৈরি করুন:
namespace App\Models;
use CodeIgniter\Model;
class FormModel extends Model {
protected $table = 'form_data';
protected $allowedFields = ['name', 'email'];
}
namespace App\Controllers;
use App\Models\FormModel;
use CodeIgniter\Controller;
class FormController extends Controller {
public function submit() {
$validation = \Config\Services::validation();
$validation->setRules([
'name' => 'required|min_length[3]|max_length[50]',
'email' => 'required|valid_email'
]);
if (!$validation->withRequest($this->request)->run()) {
return view('form_view', ['validation' => $validation]);
}
$formModel = new FormModel();
$formModel->save([
'name' => $this->request->getPost('name'),
'email' => $this->request->getPost('email')
]);
echo "Data saved successfully!";
}
}
form_data
নামে একটি ডাটাবেস টেবিল তৈরি করুন:
CREATE TABLE form_data (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
email VARCHAR(100) NOT NULL
);
ফর্মের জন্য পৃথক টেমপ্লেট তৈরি করুন এবং কন্টেন্ট ডায়নামিক করার জন্য পুনরায় ব্যবহারযোগ্য ফাইল তৈরি করুন। উদাহরণ:
<?php echo form_open('formcontroller/submit'); ?>
<label for="name">Name:</label>
<input type="text" name="name" id="name" required><br><br>
<label for="email">Email:</label>
<input type="email" name="email" id="email" required><br><br>
<button type="submit">Submit</button>
<?php echo form_close(); ?>
CodeIgniter-এ ফর্ম তৈরি এবং ডেটা সাবমিট করা খুব সহজ। Validation Library ব্যবহার করে ইনপুট যাচাই নিশ্চিত করা যায় এবং Model ব্যবহার করে ডাটাবেসে ডেটা সংরক্ষণ করা যায়। ফর্মের পুনরায় ব্যবহারযোগ্যতা নিশ্চিত করার জন্য ফর্মের কম্পোনেন্টগুলো পৃথক করুন এবং সেগুলো টেমপ্লেট আকারে সংরক্ষণ করুন।
Form Validation হলো CodeIgniter এর একটি গুরুত্বপূর্ণ ফিচার, যা ব্যবহারকারীর ইনপুট ডেটা যাচাই করার জন্য ব্যবহৃত হয়। এটি ডাটাবেসে ডেটা সংরক্ষণের আগে নিশ্চিত করে যে ইনপুট সঠিক এবং নিরাপদ। CodeIgniter এ Form Validation কার্যকর করার জন্য বিভিন্ন Rules এবং Methods সরবরাহ করা হয়েছে।
Form Validation Rules হলো ডেটার ধরন এবং বৈধতা যাচাই করার জন্য ব্যবহৃত প্রি-ডিফাইন্ড নিয়ম। নিচে গুরুত্বপূর্ণ কয়েকটি Rules এর উদাহরণ দেওয়া হলো:
required
উদাহরণ:
$this->form_validation->set_rules('name', 'Name', 'required');
min_length
উদাহরণ:
$this->form_validation->set_rules('password', 'Password', 'required|min_length[8]');
max_length
উদাহরণ:
$this->form_validation->set_rules('username', 'Username', 'required|max_length[20]');
valid_email
উদাহরণ:
$this->form_validation->set_rules('email', 'Email', 'required|valid_email');
numeric
উদাহরণ:
$this->form_validation->set_rules('age', 'Age', 'required|numeric');
matches
উদাহরণ:
$this->form_validation->set_rules('password', 'Password', 'required');
$this->form_validation->set_rules('passconf', 'Password Confirmation', 'required|matches[password]');
is_unique
উদাহরণ:
$this->form_validation->set_rules('username', 'Username', 'required|is_unique[users.username]');
CodeIgniter এ Form Validation পরিচালনা করার জন্য কয়েকটি গুরুত্বপূর্ণ মেথড ব্যবহার করা হয়।
set_rules()
উদাহরণ:
$this->form_validation->set_rules('name', 'Name', 'required|min_length[3]');
run()
উদাহরণ:
if ($this->form_validation->run() == FALSE) {
$this->load->view('form_view');
} else {
echo "Validation Successful!";
}
set_message()
উদাহরণ:
$this->form_validation->set_message('required', '{field} ফিল্ডটি পূরণ করা বাধ্যতামূলক।');
error_array()
উদাহরণ:
$errors = $this->form_validation->error_array();
print_r($errors);
error_string()
উদাহরণ:
echo $this->form_validation->error_string();
class User extends CI_Controller {
public function register() {
$this->load->library('form_validation');
$this->form_validation->set_rules('name', 'Name', 'required|min_length[3]');
$this->form_validation->set_rules('email', 'Email', 'required|valid_email');
$this->form_validation->set_rules('password', 'Password', 'required|min_length[8]');
$this->form_validation->set_rules('passconf', 'Password Confirmation', 'required|matches[password]');
if ($this->form_validation->run() == FALSE) {
$this->load->view('register_form');
} else {
echo "Registration Successful!";
}
}
}
register_form.php
)<form method="post" action="<?php echo base_url('user/register'); ?>">
<label for="name">Name:</label>
<input type="text" name="name" value="<?php echo set_value('name'); ?>">
<?php echo form_error('name'); ?>
<label for="email">Email:</label>
<input type="text" name="email" value="<?php echo set_value('email'); ?>">
<?php echo form_error('email'); ?>
<label for="password">Password:</label>
<input type="password" name="password">
<?php echo form_error('password'); ?>
<label for="passconf">Confirm Password:</label>
<input type="password" name="passconf">
<?php echo form_error('passconf'); ?>
<button type="submit">Register</button>
</form>
Form Validation CodeIgniter এর একটি শক্তিশালী ফিচার, যা ওয়েব অ্যাপ্লিকেশনে ইনপুট যাচাইয়ের একটি নিরাপদ এবং কার্যকর সমাধান প্রদান করে।
Custom Validation Rules ব্যবহার করে CodeIgniter-এ ফর্ম বা ডেটা যাচাইয়ের জন্য আপনার নির্দিষ্ট নিয়ম তৈরি করা যায়। CodeIgniter এর বিল্ট-ইন ভ্যালিডেশন রুল ছাড়াও, কাস্টম ভ্যালিডেশন রুল যোগ করার মাধ্যমে আপনি অ্যাপ্লিকেশনকে আরও নমনীয় করতে পারেন।
Custom Validation Rules তৈরি করতে app/Validation
ডিরেক্টরিতে একটি নতুন ক্লাস তৈরি করুন।
উদাহরণ:
app/Validation
ডিরেক্টরিতে একটি ফাইল তৈরি করুন (যেমন: CustomRules.php
)।<?php
namespace App\Validation;
class CustomRules
{
public function validPhone(string $str, string $fields, array $data): bool
{
// কাস্টম লজিক: শুধুমাত্র ১১ সংখ্যার ফোন নম্বর গ্রহণ করবে
return preg_match('/^\d{11}$/', $str) === 1;
}
}
Custom Validation Rule ব্যবহার করার জন্য এটিকে CodeIgniter-এ নিবন্ধন করতে হবে।
app/Config/Validation.php
ফাইল খুলুন।$ruleSets
অ্যারের মধ্যে আপনার ক্লাসটি যোগ করুন:
public $ruleSets = [
\CodeIgniter\Validation\Rules::class,
\App\Validation\CustomRules::class, // কাস্টম রুল যোগ করা
];
Form validation এ Custom Rule ব্যবহার করতে পারবেন।
উদাহরণ:
$validation = \Config\Services::validation();
$rules = [
'phone' => 'required|validPhone', // Custom Rule 'validPhone' ব্যবহার
];
$data = [
'phone' => '01712345678',
];
if ($validation->setRules($rules)->run($data)) {
echo "Validation Passed!";
} else {
echo "Validation Failed!";
print_r($validation->getErrors());
}
Custom Validation Rules-এর জন্য নির্দিষ্ট Error Message কনফিগার করা যায়।
app/Language/en/Validation.php
ফাইলটি খুলুন।আপনার কাস্টম রুলের জন্য একটি মেসেজ সংযুক্ত করুন:
return [
'validPhone' => 'The {field} must be a valid 11-digit phone number.',
];
আপনি একটি রুল তৈরি করতে পারেন, যা চেক করবে একজন ব্যবহারকারীর বয়স ১৮-এর উপরে কিনা।
CustomRules.php:
<?php
namespace App\Validation;
class CustomRules
{
public function validAge(string $str, string $fields, array $data): bool
{
return (int)$str >= 18;
}
}
Validation.php এ নিবন্ধন:
public $ruleSets = [
\CodeIgniter\Validation\Rules::class,
\App\Validation\CustomRules::class,
];
Validation Message যোগ: app/Language/en/Validation.php
ফাইল:
return [
'validAge' => 'The {field} must be 18 years or older.',
];
Rule ব্যবহার:
$rules = [
'age' => 'required|validAge',
];
$data = [
'age' => 17,
];
if ($validation->setRules($rules)->run($data)) {
echo "Validation Passed!";
} else {
print_r($validation->getErrors());
}
Array
(
[age] => The age must be 18 years or older.
)
Custom Validation Rules ব্যবহার করে CodeIgniter-এ উন্নত এবং নির্ভুল ভ্যালিডেশন মেকানিজম তৈরি করা যায়, যা অ্যাপ্লিকেশনের ডেটা ইন্টিগ্রিটি নিশ্চিত করে।
CodeIgniter-এ ফর্মের ভ্যালিডেশন ত্রুটি (Form Errors) এবং সফল বার্তা (Success Messages) প্রদর্শনের জন্য বিল্ট-ইন ফিচার রয়েছে। এই বার্তাগুলো ব্যবহারকারীদের ইনপুট ফর্মের সঠিকতা যাচাই এবং সঠিক কার্যক্রম নিশ্চিত করতে সহায়ক।
CodeIgniter-এ ফর্ম ভ্যালিডেশন পরিচালনা করতে Validation
লাইব্রেরি ব্যবহার করা হয়। এই লাইব্রেরি ফর্ম ইনপুট যাচাই করতে এবং প্রয়োজনীয় ত্রুটি বার্তা প্রদর্শন করতে সক্ষম।
<?php
namespace App\Controllers;
use CodeIgniter\Controller;
class FormController extends Controller {
public function submit() {
$validation = \Config\Services::validation();
// ফর্মের নিয়ম সংজ্ঞায়িত
$rules = [
'username' => 'required|min_length[5]',
'email' => 'required|valid_email',
'password' => 'required|min_length[8]'
];
if ($this->request->getMethod() === 'post') {
if (!$this->validate($rules)) {
// ত্রুটি বার্তা দেখানো
return view('form_view', ['validation' => $validation]);
} else {
// সফল বার্তা দেখানো
session()->setFlashdata('success', 'Form submitted successfully!');
return redirect()->to('/form');
}
}
return view('form_view');
}
}
View ফাইলের মধ্যে ভ্যালিডেশন ত্রুটি বার্তা প্রদর্শনের জন্য নিচের কোড ব্যবহার করুন:
<?php if (isset($validation)): ?>
<div class="alert alert-danger">
<?= $validation->listErrors() ?>
</div>
<?php endif; ?>
<div>
<label for="username">Username</label>
<input type="text" name="username" value="<?= set_value('username') ?>">
<small class="text-danger"><?= $validation->getError('username') ?></small>
</div>
<div>
<label for="email">Email</label>
<input type="email" name="email" value="<?= set_value('email') ?>">
<small class="text-danger"><?= $validation->getError('email') ?></small>
</div>
<?php if (session()->getFlashdata('success')): ?>
<div class="alert alert-success">
<?= session()->getFlashdata('success') ?>
</div>
<?php endif; ?>
app/Views/form_view.php
<!DOCTYPE html>
<html>
<head>
<title>Form Validation</title>
</head>
<body>
<h1>Registration Form</h1>
<!-- ত্রুটি বার্তা -->
<?php if (isset($validation)): ?>
<div class="alert alert-danger">
<?= $validation->listErrors() ?>
</div>
<?php endif; ?>
<!-- সফল বার্তা -->
<?php if (session()->getFlashdata('success')): ?>
<div class="alert alert-success">
<?= session()->getFlashdata('success') ?>
</div>
<?php endif; ?>
<!-- ফর্ম -->
<form action="/form/submit" method="post">
<?= csrf_field() ?>
<div>
<label for="username">Username</label>
<input type="text" name="username" value="<?= set_value('username') ?>">
<small class="text-danger"><?= $validation->getError('username') ?></small>
</div>
<div>
<label for="email">Email</label>
<input type="email" name="email" value="<?= set_value('email') ?>">
<small class="text-danger"><?= $validation->getError('email') ?></small>
</div>
<div>
<label for="password">Password</label>
<input type="password" name="password">
<small class="text-danger"><?= $validation->getError('password') ?></small>
</div>
<button type="submit">Submit</button>
</form>
</body>
</html>
set_value('field_name')
ফর্ম পুনরায় লোড হলে ফিল্ডে পূর্বের ইনপুট মান প্রদর্শন করে।
getError('field_name')
নির্দিষ্ট ইনপুট ফিল্ডের ত্রুটি বার্তা প্রদর্শন করে।
listErrors()
সব ত্রুটি একসাথে তালিকাভুক্ত করে দেখায়।
session()->setFlashdata('key', 'value')
একটি সাময়িক বার্তা সংরক্ষণ করে।
session()->getFlashdata('key')
সেট করা বার্তা পুনরায় রেন্ডার করে।
CodeIgniter-এ ফর্ম ভ্যালিডেশন এবং বার্তা প্রদর্শন একটি সহজ এবং কার্যকর পদ্ধতি। Form Errors ব্যবহারকারীদের ইনপুটের ত্রুটি সংশোধন করতে সাহায্য করে এবং Success Messages সফল কাজের জন্য তাদের নিশ্চিত করে। এটি ব্যবহারকারীর অভিজ্ঞতা উন্নত করে।
Read more