Controller তৈরি এবং Actions তৈরি করা

কন্ট্রোলারস (Controllers) - কেকপিএইচপি (CakePHP) - Web Development

298

CakePHP ফ্রেমওয়ার্কে Controller এবং Actions হল MVC (Model-View-Controller) আর্কিটেকচারের গুরুত্বপূর্ণ অংশ। কন্ট্রোলার অ্যাপ্লিকেশন লজিক এবং ডাটা প্রসেসিংয়ের জন্য দায়িত্বশীল, এবং অ্যাকশনগুলি কন্ট্রোলারের ফাংশন যা নির্দিষ্ট রাউট বা ইউআরএল অনুযায়ী কার্য সম্পাদন করে।

এই টিউটোরিয়ালে, আমরা শিখব কিভাবে CakePHP-তে কন্ট্রোলার এবং অ্যাকশন তৈরি করতে হয়।


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

CakePHP-তে কন্ট্রোলার তৈরি করতে bin/cake bake controller কমান্ড ব্যবহার করা হয়। এই কমান্ডটি স্বয়ংক্রিয়ভাবে একটি কন্ট্রোলার ফাইল তৈরি করে।

১. কন্ট্রোলার তৈরি করার জন্য কমান্ড ব্যবহার

প্রথমে CakePHP অ্যাপ্লিকেশন ডিরেক্টরিতে যান, এবং তারপর কমান্ড লাইন থেকে কন্ট্রোলার তৈরি করতে নিচের কমান্ডটি ব্যবহার করুন:

bin/cake bake controller Articles

এই কমান্ডটি src/Controller/ArticlesController.php ফাইল তৈরি করবে।

২. কন্ট্রোলার ফাইলের গঠন

আপনি যখন একটি কন্ট্রোলার তৈরি করবেন, CakePHP স্বয়ংক্রিয়ভাবে একটি ফাইল তৈরি করবে যার মধ্যে কিছু ডিফল্ট কোড থাকবে। উদাহরণস্বরূপ, ArticlesController.php কন্ট্রোলারটি এরকম হতে পারে:

<?php
namespace App\Controller;

use App\Controller\AppController;

class ArticlesController extends AppController
{
    public function index()
    {
        $this->set('articles', $this->Articles->find('all'));
    }

    public function view($id = null)
    {
        $article = $this->Articles->get($id);
        $this->set('article', $article);
    }
}

এই কোডে দুটি অ্যাকশন (মেথড) রয়েছে:

  1. index(): এই অ্যাকশনটি সকল আর্টিকেলস ডেটা প্রদর্শন করবে।
  2. view(): এই অ্যাকশনটি একটি নির্দিষ্ট আর্টিকেল প্রদর্শন করবে, যা id দ্বারা চিহ্নিত।

Actions (অ্যাকশন) তৈরি করা

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

১. একটি নতুন অ্যাকশন তৈরি করা

ধরা যাক, আপনি আর্টিকেল তৈরি করার জন্য একটি অ্যাকশন (add()) যোগ করতে চান। তাহলে আপনার কন্ট্রোলার ফাইলটি এমন দেখতে হবে:

public function add()
{
    $article = $this->Articles->newEmptyEntity();
    if ($this->request->is('post')) {
        $article = $this->Articles->patchEntity($article, $this->request->getData());
        if ($this->Articles->save($article)) {
            $this->Flash->success(__('Your article has been saved.'));
            return $this->redirect(['action' => 'index']);
        }
        $this->Flash->error(__('Unable to add your article.'));
    }
    $this->set('article', $article);
}
  • $this->Articles->newEmptyEntity(): নতুন একটি Article অবজেক্ট তৈরি করা।
  • $this->request->is('post'): পোষ্ট রিকোয়েস্ট হলে, ডাটা গ্রহণ ও সংরক্ষণ করা হয়।
  • $this->Flash->success() এবং $this->Flash->error(): সফল বা ত্রুটির বার্তা প্রদর্শন করা।
  • $this->redirect(): ইউজারকে অন্য অ্যাকশনে রিডাইরেক্ট করা।

২. অ্যাকশনটির জন্য ভিউ তৈরি করা

অ্যাকশনটির জন্য একটি ভিউ ফাইল তৈরি করা হয়, যেটি templates/Articles ডিরেক্টরির মধ্যে রাখা হয়। যেমন, add.php ভিউ ফাইলটি তৈরি হবে যা ফর্ম ডেটা গ্রহণ করবে।

templates/Articles/add.php ফাইলটি এভাবে দেখতে পারে:

<h1>Add New Article</h1>

<?php
echo $this->Form->create($article);
echo $this->Form->control('title');
echo $this->Form->control('body');
echo $this->Form->button(__('Save Article'));
echo $this->Form->end();
?>

এই ফর্মটি ব্যবহারকারীর কাছ থেকে title এবং body ডেটা গ্রহণ করবে এবং add() অ্যাকশনটিতে পাঠাবে।


Routes (রাউট) কনফিগারেশন

CakePHP স্বয়ংক্রিয়ভাবে কিছু সাধারণ রাউট তৈরি করে, তবে আপনি যদি কাস্টম রাউট চান, তাহলে config/routes.php ফাইলের মাধ্যমে তা কনফিগার করতে পারেন।

যেমন, যদি আপনি articles/view/1 রাউটের মাধ্যমে view অ্যাকশনটি কল করতে চান, তাহলে আপনি কাস্টম রাউট তৈরি করতে পারেন:

$routes->connect('/articles/view/*', ['controller' => 'Articles', 'action' => 'view']);

Controller এর আরও কিছু অ্যাকশন

১. edit() অ্যাকশন

এই অ্যাকশনটি কোনো নির্দিষ্ট আর্টিকেলকে এডিট করার জন্য ব্যবহৃত হয়:

public function edit($id = null)
{
    $article = $this->Articles->get($id);
    if ($this->request->is(['patch', 'post', 'put'])) {
        $article = $this->Articles->patchEntity($article, $this->request->getData());
        if ($this->Articles->save($article)) {
            $this->Flash->success(__('Your article has been updated.'));
            return $this->redirect(['action' => 'index']);
        }
        $this->Flash->error(__('Unable to update your article.'));
    }
    $this->set('article', $article);
}

২. delete() অ্যাকশন

এই অ্যাকশনটি একটি আর্টিকেল ডিলিট করার জন্য ব্যবহৃত হয়:

public function delete($id)
{
    $this->request->allowMethod(['post', 'delete']);
    $article = $this->Articles->get($id);
    if ($this->Articles->delete($article)) {
        $this->Flash->success(__('The article has been deleted.'));
    } else {
        $this->Flash->error(__('The article could not be deleted. Please, try again.'));
    }
    return $this->redirect(['action' => 'index']);
}

CakePHP-তে কন্ট্রোলার এবং অ্যাকশন তৈরি করা খুবই সহজ এবং কার্যকর। কন্ট্রোলার সাধারণত অ্যাপ্লিকেশনের লজিক পরিচালনা করে এবং অ্যাকশনগুলি নির্দিষ্ট কার্য সম্পাদন করে। অ্যাকশনগুলি নির্দিষ্ট রাউটের মাধ্যমে কল করা হয় এবং প্রতিটি অ্যাকশন ডেটা প্রক্রিয়া করে ভিউ ফাইলে পাঠিয়ে দেয়। এই প্রক্রিয়াটি CakePHP এর MVC আর্কিটেকচারের মূল ভিত্তি।

Content added By
Promotion

Are you sure to start over?

Loading...