Yii ফ্রেমওয়ার্কে কন্ট্রোলার থেকে ভিউতে ডেটা পাস করা একটি সাধারণ প্রক্রিয়া। Yii MVC (Model-View-Controller) আর্কিটেকচার অনুসরণ করে, যেখানে কন্ট্রোলারটি মডেল এবং ভিউয়ের মধ্যে সংযোগ স্থাপন করে। কন্ট্রোলারটি প্রয়োজনীয় ডেটা মডেল থেকে সংগ্রহ করে এবং তারপর সেটি ভিউতে পাঠায়, যাতে ভিউ টেমপ্লেট ডেটা প্রদর্শন করতে পারে।
কন্ট্রোলার থেকে ভিউতে ডেটা পাস করার প্রক্রিয়া
১. সাধারণ ডেটা পাস করা
কন্ট্রোলার থেকে ভিউতে ডেটা পাস করার জন্য render() মেথড ব্যবহার করা হয়। এই মেথডে প্রথম আর্গুমেন্ট হিসেবে ভিউ ফাইলের নাম এবং দ্বিতীয় আর্গুমেন্ট হিসেবে অ্যারে আকারে ডেটা পাঠানো হয়।
উদাহরণস্বরূপ:
// app/controllers/SiteController.php
namespace app\controllers;
use Yii;
use yii\web\Controller;
class SiteController extends Controller
{
public function actionIndex()
{
$message = 'Welcome to Yii Framework!';
return $this->render('index', [
'message' => $message
]);
}
}
এখানে, actionIndex() মেথডে $message ভেরিয়েবলটি ভিউতে পাস করা হচ্ছে। এই ডেটা অ্যারে আকারে render() মেথডে পাঠানো হচ্ছে, যার মধ্যে 'message' => $message।
২. ভিউতে ডেটা গ্রহণ করা
কন্ট্রোলার থেকে পাস করা ডেটা ভিউতে গ্রহণ করতে, ভিউ ফাইলে সেই ভেরিয়েবলের নাম ব্যবহার করা হয়।
// app/views/site/index.php
<?php
/* @var $this yii\web\View */
/* @var $message string */
echo $message; // এটি কন্ট্রোলার থেকে পাস করা ডেটা প্রদর্শন করবে
?>
এখানে, message ভেরিয়েবলটি কন্ট্রোলার থেকে ভিউতে পাঠানো হয়েছিল, এবং ভিউতে আমরা সেটি echo দিয়ে প্রদর্শন করেছি।
৩. মডেল থেকে ডেটা ভিউতে পাস করা
মডেল থেকে ডেটা সংগ্রহ করে সেটি ভিউতে পাস করা যায়। উদাহরণস্বরূপ, একটি মডেল থেকে ডেটাবেসের তথ্য সংগ্রহ করে সেটি ভিউতে পাঠানো।
// app/controllers/SiteController.php
namespace app\controllers;
use Yii;
use app\models\Article;
use yii\web\Controller;
class SiteController extends Controller
{
public function actionIndex()
{
$articles = Article::find()->all(); // ডেটাবেস থেকে আর্টিকেলস সংগ্রহ
return $this->render('index', [
'articles' => $articles // মডেল থেকে ডেটা ভিউতে পাঠানো
]);
}
}
এখানে, Article মডেল থেকে সব আর্টিকেল ডেটা find()->all() দিয়ে সংগ্রহ করা হচ্ছে এবং render() মেথডে ভিউতে পাঠানো হচ্ছে।
ভিউতে মডেল ডেটা প্রদর্শন
// app/views/site/index.php
<?php
/* @var $this yii\web\View */
/* @var $articles app\models\Article[] */
foreach ($articles as $article) {
echo '<h2>' . $article->title . '</h2>';
echo '<p>' . $article->content . '</p>';
}
?>
এখানে, articles ভেরিয়েবলটি মডেল থেকে পাঠানো হয়েছিল এবং foreach লুপ ব্যবহার করে প্রতিটি আর্টিকেল প্রদর্শন করা হচ্ছে।
৪. ফ্ল্যাশ মেসেজ ভিউতে পাস করা
Yii ফ্রেমওয়ার্কে, কন্ট্রোলার থেকে ভিউতে ফ্ল্যাশ মেসেজ পাস করা যায় যা ব্যবহারকারীর জন্য সতর্কতা বা তথ্য মেসেজ হিসেবে প্রদর্শিত হয়।
// app/controllers/SiteController.php
namespace app\controllers;
use Yii;
use yii\web\Controller;
class SiteController extends Controller
{
public function actionIndex()
{
Yii::$app->session->setFlash('success', 'You have successfully logged in.');
return $this->render('index');
}
}
এখানে, ফ্ল্যাশ মেসেজে success টাইপের একটি মেসেজ সেট করা হয়েছে।
ভিউতে ফ্ল্যাশ মেসেজ প্রদর্শন
// app/views/site/index.php
<?php
/* @var $this yii\web\View */
if (Yii::$app->session->hasFlash('success')) {
echo Yii::$app->session->getFlash('success');
}
?>
এখানে, ফ্ল্যাশ মেসেজটি চেক করা হচ্ছে এবং যদি সেটি থাকে, তবে তা প্রদর্শন করা হচ্ছে।
৫. কমপ্লেক্স ডেটা পাস করা (অ্যারে বা অবজেক্ট)
কোনও জটিল ডেটা যেমন অ্যারে বা অবজেক্টও ভিউতে পাস করা যেতে পারে।
// app/controllers/SiteController.php
namespace app\controllers;
use Yii;
use yii\web\Controller;
class SiteController extends Controller
{
public function actionIndex()
{
$userInfo = [
'name' => 'John Doe',
'email' => 'john.doe@example.com'
];
return $this->render('index', [
'userInfo' => $userInfo
]);
}
}
ভিউতে অ্যারে বা অবজেক্টের ডেটা প্রদর্শন
// app/views/site/index.php
<?php
/* @var $this yii\web\View */
/* @var $userInfo array */
echo 'Name: ' . $userInfo['name'] . '<br>';
echo 'Email: ' . $userInfo['email'];
?>
এখানে, userInfo অ্যারে ভিউতে পাস করা হয়েছে এবং আমরা তার ভ্যালু গুলো প্রদর্শন করছি।
সারাংশ
Yii ফ্রেমওয়ার্কে কন্ট্রোলার থেকে ভিউতে ডেটা পাস করা একটি গুরুত্বপূর্ণ কাজ। আপনি সোজাসুজি ডেটা পাস করতে পারেন, বা মডেল বা অ্যারে/অবজেক্টের মতো জটিল ডেটাও পাস করতে পারেন। render() মেথডের মাধ্যমে ডেটা পাঠানো হয়, এবং ভিউতে সেগুলো উপস্থাপন করা হয়। ফ্ল্যাশ মেসেজের মতো অতিরিক্ত ফিচারও সহজেই ব্যবহার করা যায়, যা ব্যবহারকারীর জন্য গুরুত্বপূর্ণ তথ্য বা সতর্কতা প্রদান করে।
Read more