Filters এবং Controller Behaviors

কন্ট্রোলারস এবং অ্যাকশনস - জী ফ্রেমওয়ার্ক (Yii Framework) - Web Development

238

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...