Controller হলো CodeIgniter ফ্রেমওয়ার্কের অন্যতম গুরুত্বপূর্ণ উপাদান। এটি Model এবং View এর মধ্যে যোগাযোগ স্থাপন করে এবং অ্যাপ্লিকেশনের কার্যপ্রবাহ নিয়ন্ত্রণ করে। Controller ব্যবহার করে আপনি ডেটা ম্যানিপুলেট করতে পারেন এবং ভিউতে পাঠাতে পারেন।
Controller কীভাবে কাজ করে?
CodeIgniter-এ Controller হলো একটি PHP ক্লাস, যা app/Controllers ডিরেক্টরিতে সংরক্ষিত থাকে। এটি ব্যবহারকারী থেকে ইনপুট গ্রহণ করে, প্রাসঙ্গিক Model থেকে ডেটা রিট্রিভ করে এবং সেই ডেটা View এ পাঠায়।
Controller তৈরি
একটি কাস্টম Controller তৈরি করা
- Controller ফাইল তৈরি করুন:
app/Controllersডিরেক্টরিতে একটি ফাইল তৈরি করুন। উদাহরণ:ProductController.php কন্ট্রোলারের ক্লাস ডিফাইন করুন:
<?php namespace App\Controllers; use App\Models\ProductModel; class ProductController extends BaseController { public function index() { // ডিফল্ট ভিউ লোড করা return view('welcome_message'); } }এখানে
index()হলো ডিফল্ট মেথড, যা/productURL এ অ্যাক্সেস করলে চালু হবে।
Controller থেকে View লোড করা
View হলো HTML ফাইল যা অ্যাপ্লিকেশনের আউটপুট প্রদর্শনের জন্য ব্যবহৃত হয়।
View তৈরি
- View ফাইল তৈরি করুন:
app/Viewsডিরেক্টরিতে একটি ফাইল তৈরি করুন। উদাহরণ:product_list.php HTML যোগ করুন:
<h1>Product List</h1> <ul> <?php if(isset($products)): ?> <?php foreach ($products as $product): ?> <li><?= $product['name']; ?> - <?= $product['price']; ?></li> <?php endforeach; ?> <?php else: ?> <li>No products found.</li> <?php endif; ?> </ul>
Controller থেকে View লোড করা
public function index()
{
$data['products'] = [
['name' => 'Product 1', 'price' => 100],
['name' => 'Product 2', 'price' => 200],
];
return view('product_list', $data);
}
এখানে $data অ্যারে ভিউতে পাঠানো হবে এবং ভিউ সেই ডেটা প্রদর্শন করবে।
Controller থেকে Model ব্যবহার করা
Model মূলত ডেটাবেসের সাথে যোগাযোগ করে। Controller থেকে Model ব্যবহার করে ডেটাবেসের ডেটা রিট্রিভ বা ম্যানিপুলেট করা যায়।
Model তৈরি
- Model ফাইল তৈরি করুন:
app/Modelsডিরেক্টরিতে একটি ফাইল তৈরি করুন। উদাহরণ:ProductModel.php মডেলের কোড যোগ করুন:
<?php namespace App\Models; use CodeIgniter\Model; class ProductModel extends Model { protected $table = 'products'; protected $allowedFields = ['name', 'price']; }
Controller থেকে Model ব্যবহার
public function index()
{
$productModel = new \App\Models\ProductModel();
$data['products'] = $productModel->findAll(); // সমস্ত পণ্য রিট্রিভ করা
return view('product_list', $data);
}
এখানে findAll() মেথড ব্যবহার করে ডেটাবেস থেকে সমস্ত পণ্য রিট্রিভ করা হয়েছে।
পূর্ণাঙ্গ উদাহরণ: Controller, Model এবং View
Controller
<?php
namespace App\Controllers;
use App\Models\ProductModel;
class ProductController extends BaseController
{
public function index()
{
$productModel = new ProductModel();
$data['products'] = $productModel->findAll(); // সমস্ত পণ্য রিট্রিভ করা
return view('product_list', $data); // ভিউ লোড করা
}
}
Model
<?php
namespace App\Models;
use CodeIgniter\Model;
class ProductModel extends Model
{
protected $table = 'products';
protected $allowedFields = ['name', 'price'];
}
View (app/Views/product_list.php)
<h1>Product List</h1>
<ul>
<?php if(isset($products) && !empty($products)): ?>
<?php foreach ($products as $product): ?>
<li><?= $product['name']; ?> - <?= $product['price']; ?></li>
<?php endforeach; ?>
<?php else: ?>
<li>No products found.</li>
<?php endif; ?>
</ul>
Controller, Model এবং View এর মধ্যে সম্পর্ক
- Controller:
ব্যবহারকারী থেকে ইনপুট গ্রহণ করে এবং প্রাসঙ্গিক Model ও View পরিচালনা করে। - Model:
ডাটাবেস থেকে ডেটা রিট্রিভ বা ম্যানিপুলেট করে এবং Controller-এ ডেটা পাঠায়। - View:
Controller থেকে ডেটা গ্রহণ করে এবং ব্যবহারকারীর জন্য আউটপুট রেন্ডার করে।
CodeIgniter-এর Controller, Model, এবং View ব্যবহারের মাধ্যমে আপনার অ্যাপ্লিকেশন মডুলার এবং রক্ষণাবেক্ষণযোগ্য হবে। এটি ডেভেলপমেন্ট প্রসেসকে দ্রুত এবং কার্যকরী করে তোলে।
Read more