Skill

কন্ট্রোলারস এবং অ্যাকশনস

জী ফ্রেমওয়ার্ক (Yii Framework) - Web Development

223

Yii ফ্রেমওয়ার্কের মধ্যে কন্ট্রোলারস (Controllers) এবং অ্যাকশনস (Actions) একটি অ্যাপ্লিকেশন কাঠামোর অপরিহার্য অংশ। কন্ট্রোলার হল একটি কোড ব্লক যা ইউজারের অনুরোধ (request) গ্রহণ করে এবং উপযুক্ত অ্যাকশন (action) নির্বাচন করে, যা সাধারণত একটি নির্দিষ্ট কার্য সম্পাদন করে। অ্যাকশনগুলি হল কন্ট্রোলারের মেথড যা নির্দিষ্ট কার্য পরিচালনা করে এবং ফলস্বরূপ একটি ভিউ রেন্ডার করে বা ডেটাবেস অপারেশন সম্পন্ন করে।

এই নিবন্ধে আমরা Yii ফ্রেমওয়ার্কে কন্ট্রোলার এবং অ্যাকশনের কাজ ও তাদের ব্যবহার সম্পর্কে বিস্তারিত আলোচনা করব।


কন্ট্রোলার (Controllers)

Yii ফ্রেমওয়ার্কের কন্ট্রোলার ক্লাসগুলি yii\base\Controller ক্লাস থেকে ইনহেরিট (inherit) করে। কন্ট্রোলার ইউজারের HTTP রিকোয়েস্ট (request) অনুযায়ী নির্দিষ্ট অ্যাকশনগুলি কল করে এবং প্রাসঙ্গিক ভিউ প্রদর্শন করে।

কন্ট্রোলার তৈরি করা

Yii-তে নতুন কন্ট্রোলার তৈরি করতে, yii\console\controllers কমান্ড ব্যবহার করা যেতে পারে বা ম্যানুয়ালি কন্ট্রোলার ফাইল তৈরি করা যেতে পারে। সাধারণভাবে, কন্ট্রোলারের ফাইলগুলি controllers/ ডিরেক্টরির মধ্যে থাকে।

কন্ট্রোলার তৈরি করার উদাহরণ:

  1. একটি কন্ট্রোলার তৈরি:
    Yii 2 তে কন্ট্রোলার তৈরি করতে, controllers/ ডিরেক্টরিতে একটি নতুন PHP ফাইল তৈরি করুন। উদাহরণস্বরূপ:

    <?php
    namespace app\controllers;
    
    use yii\web\Controller;
    
    class SiteController extends Controller
    {
        public function actionIndex()
        {
            return $this->render('index');
        }
    
        public function actionAbout()
        {
            return $this->render('about');
        }
    }
    
    • এখানে, SiteController একটি কন্ট্রোলার যা actionIndex এবং actionAbout অ্যাকশনগুলো প্রক্রিয়া করে।
    • actionIndex অ্যাকশনটি index ভিউ রেন্ডার করবে এবং actionAbout অ্যাকশনটি about ভিউ রেন্ডার করবে।

কন্ট্রোলারের প্রধান বৈশিষ্ট্য:

  • কন্ট্রোলার ক্লাসের মধ্যে, অ্যাকশন মেথডগুলি action শব্দ দিয়ে শুরু হয় (যেমন actionIndex, actionAbout ইত্যাদি)।
  • render() মেথড ব্যবহার করে কন্ট্রোলার থেকে ভিউ রেন্ডার করা হয়।
  • কন্ট্রোলার রাউটিং এবং URL-র সাথে সম্পর্কিত কাজ পরিচালনা করে।

অ্যাকশনস (Actions)

Yii ফ্রেমওয়ার্কে, একটি কন্ট্রোলারের অ্যাকশন হলো একটি পাবলিক মেথড যা ইউজারের রিকোয়েস্ট অনুসারে কার্য সম্পাদন করে। একটি অ্যাকশন সাধারণত কোনো নির্দিষ্ট কাজ করে, যেমন একটি ভিউ রেন্ডার করা বা ডেটাবেসে ডেটা ইনসার্ট/আপডেট করা।

অ্যাকশন মেথড:

একটি অ্যাকশন সাধারণত কন্ট্রোলারের মেথড হিসেবে থাকে এবং এর নাম action দিয়ে শুরু হয়।

উদাহরণ:

public function actionContact()
{
    return $this->render('contact');
}

এখানে actionContact() একটি অ্যাকশন যা contact ভিউ রেন্ডার করবে।

অ্যাকশনগুলোর কাজ:

  • ভিউ রেন্ডারিং: অ্যাকশন সাধারণত একটি ভিউ রেন্ডার করে যা ইউজারকে দেখানো হয়।
  • ডেটাবেস অপারেশন: অ্যাকশন ব্যবহার করে ডেটাবেসের সাথে ইন্টারঅ্যাক্ট করা হয়, যেমন ডেটা আপডেট, ডিলিট বা ইনসার্ট করা।
  • রিডিরেকশন: অ্যাকশন রিডিরেক্ট করতে পারে অন্য URL বা অ্যাকশনের দিকে।

কাস্টম অ্যাকশন

Yii 2-এ আপনি কাস্টম অ্যাকশনও তৈরি করতে পারেন। যদি আপনার অ্যাকশন বিশেষ কোনো কার্য সম্পাদন করে যা ডিফল্ট অ্যাকশনের বাইরে, তবে আপনি কাস্টম অ্যাকশন তৈরি করতে পারেন।

কাস্টম অ্যাকশন উদাহরণ:

public function actionCustomAction()
{
    // এখানে কোনো বিশেষ কার্য সম্পাদন করা যেতে পারে
    return $this->render('custom-view');
}

এখানে actionCustomAction() একটি কাস্টম অ্যাকশন যা custom-view ভিউ রেন্ডার করবে।


কন্ট্রোলার এবং অ্যাকশন রাউটিং

Yii ফ্রেমওয়ার্কের রাউটার URL রিকোয়েস্ট নিয়ে কন্ট্রোলার এবং অ্যাকশনকে নির্দেশ করে। একটি রাউট সাধারণত কন্ট্রোলার এবং অ্যাকশন প্যারামিটার নিয়ে গঠিত হয়, যেমন:

index.php?r=site/index

এই URL-টি SiteController কন্ট্রোলারের actionIndex() অ্যাকশন কল করবে।

  • site: কন্ট্রোলারের নাম।
  • index: অ্যাকশনের নাম।

কন্ট্রোলার এবং অ্যাকশন এর মধ্যে ডেটা প্রেরণ

Yii তে, আপনি কন্ট্রোলার থেকে ভিউতে ডেটা প্রেরণ করতে পারেন। এই কাজটি সাধারণত render() মেথডের মাধ্যমে করা হয়, যেখানে আপনি ডেটা অ্যারে পাস করেন।

উদাহরণ:

public function actionContact()
{
    $message = 'Welcome to the Contact page';
    return $this->render('contact', ['message' => $message]);
}

এখানে, message ভ্যারিয়েবলটি contact ভিউতে প্রেরণ করা হবে।


অ্যাকশন ফিল্টার (Action Filters)

Yii-তে অ্যাকশনগুলোর জন্য ফিল্টার ব্যবহার করা যেতে পারে, যেমন beforeAction() এবং afterAction() মেথড, যা অ্যাকশনের আগে বা পরে কিছু কার্য সম্পাদন করতে সাহায্য করে।

উদাহরণ:

public function beforeAction($action)
{
    if ($action->id == 'index') {
        // কিছু লজিক এখানে
    }
    return parent::beforeAction($action);
}

এখানে beforeAction() মেথডটি index অ্যাকশন চলার আগে কিছু কার্য সম্পাদন করবে।


সারাংশ

  • কন্ট্রোলার হল একটি PHP ক্লাস যা ইউজারের রিকোয়েস্টকে প্রক্রিয়া করে এবং নির্দিষ্ট অ্যাকশনের মাধ্যমে ভিউ রেন্ডার করে।
  • অ্যাকশন হল কন্ট্রোলারের পাবলিক মেথড, যা ইউজারের অনুরোধ অনুযায়ী কোনো কার্য সম্পাদন করে।
  • Yii-তে অ্যাকশন এবং কন্ট্রোলারের মাধ্যমে ডেটা প্রেরণ, কাস্টম অ্যাকশন তৈরি এবং অ্যাকশন ফিল্টার ব্যবহার করা যায়।
  • URL রাউটিংয়ের মাধ্যমে কন্ট্রোলার এবং অ্যাকশন কল করা হয়।

Yii ফ্রেমওয়ার্কের কন্ট্রোলার ও অ্যাকশন ব্যবস্থার মাধ্যমে আপনি শক্তিশালী এবং স্কেলেবল ওয়েব অ্যাপ্লিকেশন তৈরি করতে পারেন।

Content added By

Yii ফ্রেমওয়ার্কের Controller একটি গুরুত্বপূর্ণ উপাদান যা অ্যাপ্লিকেশনের লজিক এবং ইউজারের রিকোয়েস্টের মধ্যে মধ্যস্থতা করে। এটি মডেল এবং ভিউ এর মধ্যে যোগাযোগ স্থাপন করে, এবং ইউজারের রিকোয়েস্ট অনুযায়ী ডেটা প্রক্রিয়া বা ফাংশন এক্সিকিউট করে।


Controller কী?

Controller (কন্ট্রোলার) হল একটি ক্লাস যা অ্যাপ্লিকেশনের কার্যকারিতা (business logic) বা লজিক্যাল প্রক্রিয়া পরিচালনা করে। এটি ইউজারের রিকোয়েস্ট (যেমন একটি URL বা HTTP রিকোয়েস্ট) গ্রহণ করে এবং সেই অনুযায়ী উপযুক্ত অ্যাকশন (action) বা কার্যক্রম গ্রহণ করে।

Yii ফ্রেমওয়ার্কে কন্ট্রোলার একটি PHP ক্লাস হিসেবে তৈরি হয় যা yii\base\Controller ক্লাস থেকে এক্সটেন্ড করা হয়। কন্ট্রোলার ক্লাসে এক বা একাধিক অ্যাকশন থাকে, যা বিভিন্ন ইউজার ইন্টারঅ্যাকশন হ্যান্ডেল করে।


Controller এর ভূমিকা

Yii ফ্রেমওয়ার্কে কন্ট্রোলারের মূল ভূমিকা হল:

  1. ইউজারের রিকোয়েস্ট গ্রহণ করা:
    • কন্ট্রোলার রিকোয়েস্টের ভিত্তিতে প্রয়োজনীয় অ্যাকশন বা কার্যক্রম নির্ধারণ করে।
    • উদাহরণস্বরূপ, যখন একটি ইউজার example.com/index.php?r=site/index এ রিকোয়েস্ট পাঠায়, তখন site কন্ট্রোলার এবং index অ্যাকশন কল হয়।
  2. মডেল এবং ভিউ এর মধ্যে সংযোগ স্থাপন:
    • কন্ট্রোলার মডেল (Model) থেকে ডেটা নিয়ে আসে এবং ভিউ (View) তে তা পাঠানোর কাজ করে।
    • কন্ট্রোলার ডেটা প্রক্রিয়া করে এবং সেই ডেটা ভিউতে প্রেরণ করে, যাতে ইউজার তা দেখতে পায়।
  3. অ্যাকশন পরিচালনা:
    • কন্ট্রোলার সাধারণত একটি বা একাধিক অ্যাকশন (Action) ধারণ করে, যা ইউজারের রিকোয়েস্ট অনুযায়ী কার্য সম্পাদন করে। অ্যাকশন একটি পাবলিক মেথড যা কন্ট্রোলারের মধ্যে ডিফাইন করা থাকে।
    • উদাহরণস্বরূপ, actionIndex() বা actionCreate()
  4. রাউটিং এবং URL Mapping:
    • Yii ফ্রেমওয়ার্কে রাউটিং এর মাধ্যমে কন্ট্রোলার এবং অ্যাকশন নির্ধারণ করা হয়। এটি ইউজারের রিকোয়েস্টকে সঠিক কন্ট্রোলার ও অ্যাকশনের সঙ্গে যুক্ত করে।
    • রাউটিং সাধারণত config/web.php ফাইলে কনফিগার করা হয়।
  5. রিডিরেকশন এবং রেসপন্স পাঠানো:
    • কন্ট্রোলার রিকোয়েস্টের প্রেক্ষিতে বিভিন্ন রিডিরেকশন (redirect), রেসপন্স (response), বা ফলাফল প্রদান করতে পারে।
    • উদাহরণস্বরূপ, একটি সাফল্য বার্তা বা একটি এয়ারর মেসেজ ভিউতে পাঠানো হতে পারে।

Yii ফ্রেমওয়ার্কে Controller এর উদাহরণ

একটি সাধারণ কন্ট্রোলারের উদাহরণ দেওয়া হলো যা একটি PostController নামে কন্ট্রোলার তৈরি করে এবং এতে দুটি অ্যাকশন (যেমন: index এবং view) থাকবে।

namespace app\controllers;

use Yii;
use yii\web\Controller;
use app\models\Post;

class PostController extends Controller
{
    // অ্যাকশন: পোস্টের তালিকা দেখানো
    public function actionIndex()
    {
        // সমস্ত পোস্ট মডেল লোড করা
        $posts = Post::find()->all();

        // ভিউ তে পোস্ট ডেটা পাঠানো
        return $this->render('index', ['posts' => $posts]);
    }

    // অ্যাকশন: একটি নির্দিষ্ট পোস্ট দেখানো
    public function actionView($id)
    {
        // নির্দিষ্ট পোস্ট খুঁজে বের করা
        $post = Post::findOne($id);

        // ভিউ তে পোস্ট ডেটা পাঠানো
        return $this->render('view', ['post' => $post]);
    }
}

Controller Explanation:

  • actionIndex() অ্যাকশনটি সমস্ত পোস্টের তালিকা ফেচ করে এবং সেই ডেটা ভিউ তে পাঠায়।
  • actionView($id) অ্যাকশনটি একটি নির্দিষ্ট পোস্টের বিস্তারিত দেখায়, যেখানে $id হল পোস্টের ইউনিক আইডি।

এখানে render() মেথডটি ব্যবহার করা হয়েছে যা একটি ভিউ ফাইলকে রেন্ডার করে এবং কন্ট্রোলার থেকে ডেটা পাঠানোর কাজ করে।


Controller এর অ্যাকশন

প্রতিটি অ্যাকশন একটি পাবলিক মেথড, যা কন্ট্রোলারে ডিফাইন করা হয়। কন্ট্রোলার ক্লাসে বিভিন্ন অ্যাকশন থাকতে পারে, যেমন:

  1. actionIndex(): সাধারণত একটি লিস্ট বা ড্যাশবোর্ড দেখানোর জন্য ব্যবহৃত হয়।
  2. actionView(): নির্দিষ্ট তথ্য বা বিস্তারিত দেখানোর জন্য ব্যবহৃত হয়।
  3. actionCreate(): নতুন ডেটা তৈরি করার জন্য ব্যবহৃত হয়।
  4. actionUpdate(): বিদ্যমান ডেটা আপডেট করার জন্য ব্যবহৃত হয়।
  5. actionDelete(): ডেটা মুছে ফেলার জন্য ব্যবহৃত হয়।

এই সব অ্যাকশন ইউজারের রিকোয়েস্ট অনুযায়ী চলতে থাকে এবং প্রত্যেকটি অ্যাকশন একটি নির্দিষ্ট কাজ করে, যেমন ডেটাবেস থেকে তথ্য আনা, আপডেট করা, বা মুছে ফেলা।


Controller এর সাথে সম্পর্কিত কিছু গুরুত্বপূর্ণ ফিচার

  1. Access Control (ACF): Yii ফ্রেমওয়ার্কে কন্ট্রোলারের অ্যাকশনগুলোর জন্য Access Control Filter (ACF) ব্যবহার করে ইউজার অ্যাকসেস নিয়ন্ত্রণ করা যায়। উদাহরণস্বরূপ, একটি অ্যাকশন শুধু লগ ইন ইউজারের জন্য অথবা অ্যাডমিন রোলের জন্য অ্যাক্সেসযোগ্য হতে পারে।
  2. Before and After Filters:

    • beforeAction(): একটি অ্যাকশনের আগে কিছু কোড চালাতে সাহায্য করে।
    • afterAction(): একটি অ্যাকশনের পর কিছু কোড চালাতে সাহায্য করে।

    উদাহরণ:

    public function beforeAction($action)
    {
        // অ্যাকশনের আগে কিছু কোড
        return parent::beforeAction($action);
    }
    
    public function afterAction($action, $result)
    {
        // অ্যাকশনের পর কিছু কোড
        return parent::afterAction($action, $result);
    }
    

সারাংশ

Yii ফ্রেমওয়ার্কের Controller একটি গুরুত্বপূর্ণ উপাদান যা ইউজারের রিকোয়েস্ট গ্রহণ করে এবং প্রয়োজনীয় অ্যাকশন বা কার্যক্রম পরিচালনা করে। কন্ট্রোলার মডেল এবং ভিউ এর মধ্যে সংযোগ স্থাপন করে এবং ইউজারের রিকোয়েস্ট অনুযায়ী ডেটা প্রসেস করে। কন্ট্রোলারের অ্যাকশনগুলো অ্যাপ্লিকেশনের কার্যকারিতা পরিচালনা করে, এবং এটি Yii ফ্রেমওয়ার্কে রাউটিং এবং URL Mapping এর মাধ্যমে ইউজার ইন্টারফেসের সঙ্গে যোগাযোগ করে।

Content added By

Yii ফ্রেমওয়ার্কে Action Methods হল কন্ট্রোলারের ফাংশন যা HTTP রিকোয়েস্টের প্রেক্ষিতে নির্দিষ্ট কাজ সম্পন্ন করে এবং সাধারণত একটি রেসপন্স প্রদান করে। Action Methods এর মাধ্যমে আপনি বিভিন্ন ধরনের অ্যাকশন বা কাজ পরিচালনা করতে পারেন, যেমন ডেটা প্রদর্শন, ডেটাবেস থেকে তথ্য আনা, ফর্ম প্রসেস করা ইত্যাদি।

Yii ফ্রেমওয়ার্কে, Action Methods খুবই গুরুত্বপূর্ণ, কারণ এগুলোর মাধ্যমে ওয়েব অ্যাপ্লিকেশন ব্যবহারকারীর ইনপুট অনুযায়ী প্রতিক্রিয়া প্রদান করতে সক্ষম হয়। নিচে Yii ফ্রেমওয়ার্কের Action Methods এর বিভিন্ন দিক এবং তাদের ব্যবহার আলোচনা করা হলো।


১. Action Methods কী?

Action Methods হল কন্ট্রোলার ক্লাসের মেথড যেগুলি সাধারণত URL-এর মাধ্যমে অ্যাক্সেস করা হয় এবং ওয়েব পেজ রেন্ডার করার জন্য ব্যবহৃত হয়। Yii তে একটি কন্ট্রোলারের প্রতিটি মেথড একটি "অ্যাকশন" হিসেবে বিবেচিত হয়, এবং সেই অ্যাকশনটি সাধারণত URL এর সাথে সম্পর্কিত থাকে।

উদাহরণস্বরূপ:

যদি আপনার কন্ট্রোলারে একটি index() মেথড থাকে, তবে তা অ্যাকশন হিসেবে কাজ করবে এবং সাধারণত /site/index URL দিয়ে অ্যাক্সেস করা যাবে।

class SiteController extends \yii\web\Controller
{
    public function actionIndex()
    {
        return $this->render('index');
    }
}

এখানে, actionIndex() হলো একটি Action Method, যা /site/index URL এর মাধ্যমে কল করা যায়।


২. Action Methods তৈরি করা

Yii ফ্রেমওয়ার্কে নতুন Action Method তৈরি করতে কন্ট্রোলার ক্লাসে একটি পাবলিক ফাংশন যুক্ত করতে হয়। কন্ট্রোলার ক্লাসের প্রতিটি পাবলিক ফাংশন একটি অ্যাকশন হিসেবে কাজ করবে যদি ফাংশনের নামের আগে action শব্দটি থাকে।

উদাহরণ:

class PostController extends \yii\web\Controller
{
    public function actionView($id)
    {
        $post = Post::findOne($id);
        return $this->render('view', ['post' => $post]);
    }
}

এখানে, actionView() হলো একটি Action Method যা পোস্টের বিস্তারিত দেখানোর জন্য কাজ করে।


৩. Action Methods এর রিটার্ন টাইপ

Action Methods সাধারণত তিন ধরনের রিটার্ন ভ্যালু দিতে পারে:

  1. Render View: কন্ট্রোলার একটি ভিউ ফাইল রেন্ডার করে।

    public function actionIndex()
    {
        return $this->render('index');  // 'index' ভিউ ফাইল রেন্ডার হবে
    }
    
  2. Redirect to Another Action or URL: রিডিরেক্ট অ্যাকশন বা URL এ পাঠানো।

    public function actionRedirect()
    {
        return $this->redirect(['post/index']);  // পোস্ট ইনডেক্স অ্যাকশনে রিডিরেক্ট
    }
    
  3. Plain Text or JSON Response: কোন টেক্সট বা JSON রেসপন্স প্রদান করা।

    public function actionApiData()
    {
        return $this->asJson(['status' => 'success', 'data' => $data]);  // JSON রেসপন্স
    }
    

৪. Action Method Parameters

Action Methods-এ প্যারামিটার পাঠানো সম্ভব। ইউআরএল-এ প্যারামিটার যুক্ত করে এগুলিকে Action Method-এ গ্রহণ করা যায়। উদাহরণস্বরূপ:

public function actionView($id)
{
    $post = Post::findOne($id);
    return $this->render('view', ['post' => $post]);
}

এখানে, actionView অ্যাকশনে $id প্যারামিটারটি URL থেকে গ্রহণ করা হয়। URL হতে $id প্যারামিটার নেওয়ার জন্য, আপনি URL-এর মতো কিছু ব্যবহার করবেন:

/post/view?id=1

এটি actionView মেথডে $id = 1 হিসেবে পৌঁছাবে।


৫. Action Methods-এর কাস্টমাইজেশন

Yii ফ্রেমওয়ার্কে Action Methods-কে কাস্টমাইজ করতে কিছু বিশেষ পদ্ধতি আছে:

  1. Before and After Action Methods:

    • beforeAction() এবং afterAction() মেথডগুলি ব্যবহার করে অ্যাকশনের আগে বা পরে কিছু অতিরিক্ত কোড চালানো সম্ভব।

    উদাহরণস্বরূপ:

    class PostController extends \yii\web\Controller
    {
        public function beforeAction($action)
        {
            if (parent::beforeAction($action)) {
                // অ্যাকশন শুরু হওয়ার আগে কোড
                return true;
            }
            return false;
        }
    
        public function afterAction($action, $result)
        {
            // অ্যাকশন শেষ হওয়ার পরে কোড
            return parent::afterAction($action, $result);
        }
    }
    
  2. Access Control Filters (AccessControl):

    • অ্যাকশনের আগে এক্সেস কন্ট্রোল করতে আপনি AccessControl ফিল্টার ব্যবহার করতে পারেন, যাতে নির্দিষ্ট অ্যাকশন শুধুমাত্র লগড-ইন ব্যবহারকারীর জন্য বা নির্দিষ্ট রোলের জন্য অ্যাক্সেসযোগ্য হয়।

    উদাহরণ:

    public function behaviors()
    {
        return [
            'access' => [
                'class' => \yii\filters\AccessControl::class,
                'rules' => [
                    [
                        'allow' => true,
                        'actions' => ['index'],
                        'roles' => ['@'],  // লগড-ইন ইউজারদের জন্য
                    ],
                    [
                        'allow' => true,
                        'actions' => ['view'],
                        'roles' => ['?'],  // অননুমোদিত ব্যবহারকারীদের জন্য
                    ],
                ],
            ],
        ];
    }
    

৬. Built-in Actions

Yii ফ্রেমওয়ার্কে কিছু বিল্ট-ইন অ্যাকশন রয়েছে যেগুলি আপনি সরাসরি ব্যবহার করতে পারেন:

  • index(): সাধারণত অ্যাপ্লিকেশনের হোমপেজ বা ইনডেক্স পেজ রেন্ডার করার জন্য ব্যবহৃত হয়।
  • view(): সাধারণত একটি নির্দিষ্ট রেকর্ড (যেমন ব্লগ পোস্ট) দেখানোর জন্য ব্যবহৃত হয়।
  • create(): একটি নতুন রেকর্ড তৈরি করতে ব্যবহৃত হয়।
  • update(): একটি রেকর্ড আপডেট করতে ব্যবহৃত হয়।
  • delete(): একটি রেকর্ড মুছে ফেলার জন্য ব্যবহৃত হয়।

সারাংশ

Yii ফ্রেমওয়ার্কে Action Methods কন্ট্রোলারের গুরুত্বপূর্ণ অংশ, যা ইউআরএল রিকোয়েস্ট অনুযায়ী বিভিন্ন কাজ সম্পাদন করে। Action Methods সহজেই তৈরি এবং কাস্টমাইজ করা যায়, এবং এগুলির মাধ্যমে আপনি অ্যাপ্লিকেশনের বিভিন্ন কার্যাবলী যেমন ডেটা ভিউ, রিডিরেকশন, ফর্ম প্রসেসিং ইত্যাদি পরিচালনা করতে পারেন। এছাড়া beforeAction() এবং afterAction() মেথড ব্যবহার করে অ্যাকশনের আগে বা পরে অতিরিক্ত কোড এক্সিকিউট করা যায়।

Content added By

Yii ফ্রেমওয়ার্কে Controller এবং Action একটি অ্যাপ্লিকেশনের গুরুত্বপূর্ণ অংশ, যা ইউজারের রিকোয়েস্ট অনুযায়ী সঠিক লজিক এক্সিকিউট করে। Yii 2 এবং Yii 3 উভয়েই কাস্টম Controller এবং Action তৈরি করার সুবিধা দেয়, তবে Yii 3 কিছু নতুন কাঠামো নিয়ে এসেছে। এই গাইডে Yii 2 ফ্রেমওয়ার্কের কাস্টম Controller এবং Action তৈরি করার প্রক্রিয়া ব্যাখ্যা করা হবে।


১. Yii 2-এ কাস্টম Controller তৈরি করা

Yii 2 ফ্রেমওয়ার্কে কাস্টম Controller তৈরি করতে, আপনি সাধারণত controllers/ ডিরেক্টরির মধ্যে একটি নতুন PHP ফাইল তৈরি করবেন। এই কন্ট্রোলার ক্লাসটি Yii 2 এর yii\base\Controller ক্লাস থেকে ইনহেরিট করবে।

কাস্টম Controller তৈরি করার স্টেপ:

  1. Controller ফাইল তৈরি করুন:

    প্রথমে, আপনার অ্যাপ্লিকেশন এর controllers/ ডিরেক্টরিতে একটি নতুন কন্ট্রোলার ফাইল তৈরি করুন। উদাহরণস্বরূপ, আমরা একটি SiteController.php তৈরি করতে যাচ্ছি।

    controllers/SiteController.php:

    <?php
    
    namespace app\controllers;
    
    use Yii;
    use yii\web\Controller;
    
    class SiteController extends Controller
    {
        // Default action, used when no specific action is provided in the URL
        public function actionIndex()
        {
            return $this->render('index'); // renders views/site/index.php
        }
    
        // A custom action to display the About page
        public function actionAbout()
        {
            return $this->render('about'); // renders views/site/about.php
        }
    }
    

    এখানে, SiteController ক্লাসটি yii\web\Controller থেকে ইনহেরিট করা হয়েছে। actionIndex() এবং actionAbout() দুটি কাস্টম অ্যাকশন তৈরি করা হয়েছে।

  2. Views তৈরি করুন:

    কন্ট্রোলারের অ্যাকশন থেকে রেন্ডার করা ভিউ ফাইল তৈরি করুন।

    • views/site/index.php:

      <h1>Welcome to Yii Framework!</h1>
      
    • views/site/about.php:

      <h1>About Us</h1>
      <p>This is the About page.</p>
      
  3. রাউটিং:

    Yii 2 স্বয়ংক্রিয়ভাবে URL রাউটিং সিস্টেমের মাধ্যমে কন্ট্রোলার এবং অ্যাকশনটি খুঁজে নেবে। আপনি যদি ব্রাউজারে http://localhost:8080/index.php?r=site/index URL যান, তাহলে SiteController এর actionIndex() অ্যাকশনটি রেন্ডার হবে। http://localhost:8080/index.php?r=site/about URL এ গেলে SiteController এর actionAbout() অ্যাকশনটি রেন্ডার হবে।


২. কাস্টম Action তৈরি করা

Yii 2 তে Action এমন একটি ফাংশন যা নির্দিষ্ট কন্ট্রোলারের মধ্যে থাকে এবং নির্দিষ্ট রিকোয়েস্টের জন্য রেসপন্স প্রদান করে। সাধারণভাবে, action শব্দটি অ্যাকশনের নামের পূর্বে ব্যবহার করা হয়। যেমন, actionIndex(), actionAbout() ইত্যাদি।

কাস্টম Action তৈরি করার উদাহরণ:

  1. Action ক্লাস তৈরি করুন:

    যদি আপনি আরও কাস্টম একশন ব্যবহার করতে চান, তবে আপনি কাস্টম Action ক্লাসও তৈরি করতে পারেন। উদাহরণস্বরূপ, একটি কাস্টম অ্যাকশন তৈরি করা যেতে পারে যা ডাটাবেস থেকে ডেটা নিয়ে আসবে।

    controllers/SiteController.php:

    public function actionData()
    {
        // Fetch data from the database
        $data = Yii::$app->db->createCommand('SELECT * FROM table_name')->queryAll();
    
        // Render the data in a view
        return $this->render('data', ['data' => $data]);
    }
    
  2. Views ফাইল তৈরি করুন:

    views/site/data.php ফাইল তৈরি করে ডেটা ভিউয়ে প্রদর্শন করতে হবে।

    <h1>Data from Database</h1>
    <table>
        <tr>
            <th>Column 1</th>
            <th>Column 2</th>
        </tr>
        <?php foreach ($data as $item): ?>
            <tr>
                <td><?= $item['column1']; ?></td>
                <td><?= $item['column2']; ?></td>
            </tr>
        <?php endforeach; ?>
    </table>
    

    এখন, আপনি http://localhost:8080/index.php?r=site/data URL এ গিয়ে আপনার ডেটাবেস থেকে আনা ডেটা দেখতে পারবেন।


৩. Yii 3-এ কাস্টম Controller এবং Action তৈরি করা

Yii 3 এখনও উন্নয়ন পর্যায়ে রয়েছে, এবং এর স্ট্রাকচার Yii 2 থেকে কিছুটা আলাদা। Yii 3 এ কাস্টম Controller এবং Action তৈরি করার জন্য একটি মডিউল ভিত্তিক আর্কিটেকচার অনুসরণ করা হয়।

Yii 3-এ কাস্টম Controller তৈরি:

  1. Controller তৈরি করুন:

    Yii 3 তে, কন্ট্রোলার তৈরি করতে আপনাকে src/Controller ডিরেক্টরির মধ্যে কন্ট্রোলার ক্লাস ফাইল তৈরি করতে হবে।

    উদাহরণস্বরূপ, একটি SiteController.php:

    namespace app\controllers;
    
    use Yiisoft\Controller\Controller;
    
    class SiteController extends Controller
    {
        public function actionIndex()
        {
            return $this->render('index'); // renders views/site/index.php
        }
    }
    
  2. Action তৈরি করুন:

    Yii 3 তে, কাস্টম অ্যাকশনগুলো কন্ট্রোলার মেথড হিসেবে থাকে। এই মেথডগুলো URL রিকোয়েস্ট অনুযায়ী ট্রিগার হয়।

    • actionIndex() মেথডে ভিউ ফাইল রেন্ডার করা হচ্ছে। তবে Yii 3 তে এই মেথড গুলি আলাদা মডিউল ভিত্তিক কাঠামোতে থাকতে পারে।

সারাংশ

Yii ফ্রেমওয়ার্কে কাস্টম Controller এবং Action তৈরি করা সহজ এবং নমনীয়। Yii 2 তে কন্ট্রোলার তৈরি করতে yii\web\Controller ক্লাস থেকে ইনহেরিট করা হয় এবং প্রতিটি অ্যাকশন একটি মেথড হিসেবে ডিফাইন করা হয়। Yii 3 তে আর্কিটেকচার কিছুটা আলাদা হলেও, এখানে কন্ট্রোলার এবং অ্যাকশন মডিউল ভিত্তিক কাঠামোতে থাকে। Yii 2 এবং Yii 3 উভয়েই কাস্টম অ্যাকশন ও কন্ট্রোলার তৈরি করার জন্য শক্তিশালী ও ফ্লেক্সিবল ফিচার প্রদান করে।

Content added By

Yii ফ্রেমওয়ার্কে Filters এবং Controller Behaviors অ্যাপ্লিকেশনের কন্ট্রোলার লজিককে আরো কাস্টমাইজ এবং মডুলার করতে ব্যবহৃত হয়। এগুলি ডেভেলপারকে বিশেষ কার্যাবলী (যেমন: লগিং, নিরাপত্তা চেক, অ্যাক্সেস কন্ট্রোল) সহজে পরিচালনা করতে সহায়তা করে, যাতে তাদের অ্যাপ্লিকেশন আরও শক্তিশালী এবং নিরাপদ হয়।


১. Filters (ফিল্টার)

Yii ফ্রেমওয়ার্কে Filters একটি গুরুত্বপূর্ণ উপাদান যা কন্ট্রোলার অ্যাকশনগুলির পূর্বে এবং পরে বিভিন্ন কার্যাবলী সম্পাদন করতে ব্যবহৃত হয়। Filters মূলত HTTP রিকোয়েস্ট প্রক্রিয়াতে মধ্যবর্তী লজিক পরিচালনা করে এবং এটি অ্যাকশন এক্সিকিউশনের আগে বা পরে কাস্টম কোড চালানোর সুযোগ দেয়।

Yii ফ্রেমওয়ার্কে কিছু সাধারণ ফিল্টারের মধ্যে রয়েছে:

  • Access Control Filter (accessControl): এটি অ্যাকশন এক্সিকিউশনের আগে ইউজারের অনুমতি চেক করে।
  • Ajax Filter: এই ফিল্টারটি Ajax রিকোয়েস্ট হ্যান্ডল করার জন্য ব্যবহার করা হয়।
  • Verb Filter: এটি শুধুমাত্র নির্দিষ্ট HTTP verb (যেমন GET, POST) রিকোয়েস্টগুলিকে অনুমতি দেয়।

Filters ব্যবহার করার উদাহরণ:

Access Control Filter উদাহরণ:

class SiteController extends \yii\web\Controller
{
    public function behaviors()
    {
        return [
            'access' => [
                'class' => \yii\filters\AccessControl::class,
                'rules' => [
                    [
                        'allow' => true,
                        'actions' => ['index'],
                        'roles' => ['@'], // Logged in users only
                    ],
                    [
                        'allow' => false,
                        'actions' => ['admin'],
                        'roles' => ['?'], // Guests are not allowed
                    ],
                ],
            ],
        ];
    }

    public function actionIndex()
    {
        return $this->render('index');
    }

    public function actionAdmin()
    {
        return $this->render('admin');
    }
}

এখানে, AccessControl ফিল্টার ব্যবহার করে দুইটি অ্যাকশন index এবং admin এর জন্য অ্যাক্সেস কন্ট্রোল করা হয়েছে। যেখানে শুধুমাত্র লগিন ইউজাররা index অ্যাকশনটি দেখতে পারবেন এবং গেস্টরা admin অ্যাকশনটি দেখতে পারবেন না।


২. Controller Behaviors (কন্ট্রোলার বিহেভিয়ার)

Yii ফ্রেমওয়ার্কে Controller Behaviors একটি কন্ট্রোলারের অ্যাকশনের সাথে যুক্ত কাস্টম কার্যাবলী বা লজিক সংযুক্ত করতে ব্যবহৃত হয়। Behaviors মূলত কন্ট্রোলারের নির্দিষ্ট অ্যাকশনগুলোর প্রক্রিয়ায় পরিবর্তন আনার সুযোগ দেয়। এগুলিকে ফিল্টারের মতো ব্যবহার করা হয়, কিন্তু তারা আরো শক্তিশালী এবং কাস্টমাইজযোগ্য।

Yii তে Controller Behavior ব্যবহারের মাধ্যমে আপনি কন্ট্রোলারের মধ্যে পুনঃব্যবহারযোগ্য কোড লিখতে পারেন এবং বিভিন্ন কার্যাবলীকে আরো সহজভাবে পরিচালনা করতে পারেন।

Controller Behavior ব্যবহার করার উদাহরণ:

ExampleController Behavior:

namespace app\controllers;

use yii\web\Controller;

class SiteController extends Controller
{
    public function behaviors()
    {
        return [
            'timestamp' => [
                'class' => \yii\filters\TimeStampBehavior::class,
                'attribute' => 'updated_at',
            ],
        ];
    }

    public function actionIndex()
    {
        // এই অ্যাকশনে টাইমস্ট্যাম্প অ্যাট্রিবিউটের পরিবর্তন হবে
        return $this->render('index');
    }
}

এখানে, TimeStampBehavior ব্যবহার করা হয়েছে, যা অ্যাকশনের সময় স্বয়ংক্রিয়ভাবে একটি টাইমস্ট্যাম্প আপডেট করবে।


৩. Filters এবং Controller Behaviors এর পার্থক্য

বৈশিষ্ট্যFiltersController Behaviors
উদ্দেশ্যকন্ট্রোলারের অ্যাকশনের আগে বা পরে নির্দিষ্ট কার্যাবলী সম্পাদন করা।কন্ট্রোলারের আচরণ বা কার্যাবলী কাস্টমাইজ করা এবং পুনঃব্যবহারযোগ্য কোড লেখা।
ব্যবহারHTTP রিকোয়েস্ট বা রেসপন্সের প্রক্রিয়ায় মধ্যবর্তী কোড রান করা।কন্ট্রোলারের ভেতরে নির্দিষ্ট আচরণ বা কার্যাবলী যোগ করা।
প্রধান উদাহরণAccess Control Filter, Verb Filter, Ajax FilterTimestampBehavior, BlameableBehavior, SluggableBehavior
স্থানকন্ট্রোলারের behaviors() মেথডে উল্লেখ করা হয়।কন্ট্রোলারের behaviors() মেথডে উল্লেখ করা হয়।

৪. Filters এবং Behaviors একত্রে ব্যবহার

Filters এবং Controller Behaviors একত্রে ব্যবহার করলে আপনি আরো ফ্লেক্সিবল এবং পাওয়ারফুল কন্ট্রোলার তৈরি করতে পারেন। উদাহরণস্বরূপ, আপনি একটি Access Control Filter এবং Timestamp Behavior একত্রে ব্যবহার করতে পারেন, যেখানে নিরাপত্তা এবং সময় সংক্রান্ত কার্যাবলী একসাথে পরিচালিত হবে।

class SiteController extends \yii\web\Controller
{
    public function behaviors()
    {
        return [
            'access' => [
                'class' => \yii\filters\AccessControl::class,
                'rules' => [
                    [
                        'allow' => true,
                        'actions' => ['index'],
                        'roles' => ['@'], // Logged in users only
                    ],
                ],
            ],
            'timestamp' => [
                'class' => \yii\filters\TimeStampBehavior::class,
                'attribute' => 'updated_at',
            ],
        ];
    }

    public function actionIndex()
    {
        return $this->render('index');
    }
}

এখানে, একদিকে AccessControl ফিল্টারটি কন্ট্রোলার অ্যাকশনগুলোর অ্যাক্সেস নির্ধারণ করছে এবং অন্যদিকে TimeStampBehavior অ্যাকশনের সময় টাইমস্ট্যাম্প আপডেট করছে।


সারাংশ

Yii ফ্রেমওয়ার্কে Filters এবং Controller Behaviors এর মাধ্যমে আপনি কন্ট্রোলার অ্যাকশনের কার্যাবলী কাস্টমাইজ করতে পারেন এবং কোড পুনঃব্যবহারযোগ্য করতে পারেন। Filters HTTP রিকোয়েস্টের সাথে সম্পর্কিত কার্যাবলী সম্পাদন করে, যেমন অ্যাক্সেস কন্ট্রোল এবং Ajax রিকোয়েস্ট হ্যান্ডলিং, আর Behaviors কন্ট্রোলারের আচরণ বা কার্যাবলীকে আরো শক্তিশালী এবং কাস্টমাইজ করতে সহায়তা করে। একত্রে ব্যবহার করলে কোডের সংগঠন এবং রক্ষণাবেক্ষণ সহজ হয়।

Content added By
Promotion

Are you sure to start over?

Loading...