Custom Entities এবং Controllers তৈরি করা

Custom মডিউল ডেভেলপমেন্ট - ড্রুপাল (Drupal) - Web Development

246

ড্রুপাল (Drupal) একটি অত্যন্ত নমনীয় এবং শক্তিশালী কনটেন্ট ম্যানেজমেন্ট সিস্টেম (CMS), যা ডেভেলপারদের কাস্টম Entities এবং Controllers তৈরি করার মাধ্যমে সাইটের কার্যকারিতা কাস্টমাইজ এবং এক্সটেন্ড করার সুযোগ দেয়। Custom Entities তৈরি করে আপনি ড্রুপাল সাইটে নতুন ডেটা টাইপ তৈরি করতে পারেন এবং Custom Controllers ব্যবহার করে সেগুলোর সাথে ইন্টারঅ্যাক্ট করতে পারবেন।

এই গাইডে, আমরা কিভাবে ড্রুপালে Custom Entities এবং Controllers তৈরি করা যায়, সে সম্পর্কে আলোচনা করব।


Custom Entities তৈরি করা

ড্রুপাল সাইটে কাস্টম Entity তৈরি করার মাধ্যমে আপনি ড্রুপালের ডেটা মডেল কাস্টমাইজ করতে পারেন। Entity হচ্ছে ড্রুপালের ডেটা স্টোরেজ অবজেক্ট, যা কাস্টম কনটেন্ট টাইপ, ফাইল, ট্যাক্সোনমি, ব্যবহারকারী ইত্যাদির জন্য ব্যবহৃত হয়।

১. Custom Entity তৈরি করার জন্য মডিউল তৈরি করুন

প্রথমে আপনাকে একটি কাস্টম মডিউল তৈরি করতে হবে, যেখানে আপনি কাস্টম Entity সংজ্ঞায়িত করবেন। উদাহরণস্বরূপ, একটি "Book" কাস্টম Entity তৈরি করতে চাইলে:

  1. মডিউল ডিরেক্টরি তৈরি করুন: আপনার সাইটের modules/custom/ ফোল্ডারে একটি নতুন ডিরেক্টরি তৈরি করুন, যেমন book_entity
  2. মডিউল ফাইল তৈরি করুন: book_entity.info.yml ফাইল তৈরি করুন এবং এতে নিচের কনফিগারেশন যোগ করুন:

    name: 'Book Entity'
    type: module
    description: 'Creates a custom Book entity.'
    core_version_requirement: ^8 || ^9
    package: Custom
    dependencies:
      - drupal:entity
    
  3. Entity ক্লাস তৈরি করুন: src/Entity ডিরেক্টরিতে Book.php নামে একটি PHP ক্লাস তৈরি করুন, যা ContentEntityBase থেকে এক্সটেন্ড হবে।

    namespace Drupal\book_entity\Entity;
    
    use Drupal\Core\Entity\ContentEntityBase;
    use Drupal\Core\Field\BaseFieldDefinition;
    use Drupal\Core\Entity\EntityTypeInterface;
    use Drupal\Core\Field\FieldDefinitionInterface;
    
    /**
     * Defines the Book entity.
     *
     * @ContentEntityType(
     *   id = "book",
     *   label = @Translation("Book"),
     *   base_table = "book",
     *   entity_keys = {
     *     "id" = "id",
     *     "label" = "title",
     *   },
     * )
     */
    class Book extends ContentEntityBase {
    
      /**
       * {@inheritdoc}
       */
      public static function baseFieldDefinitions(EntityTypeInterface $entity_type) {
        $fields = parent::baseFieldDefinitions($entity_type);
    
        // Add the title field.
        $fields['title'] = BaseFieldDefinition::create('string')
          ->setLabel(t('Title'))
          ->setRequired(TRUE)
          ->setSetting('max_length', 255);
    
        return $fields;
      }
    }
    
  4. ডাটাবেস টেবিল তৈরি করুন: কাস্টম Entity সংরক্ষণের জন্য আপনাকে ডাটাবেস টেবিল তৈরি করতে হবে। ড্রুপাল সাধারণত Entity তৈরি করার সময় টেবিলও তৈরি করে, তবে আপনি ম্যানুয়ালি মাইগ্রেশন অথবা ডাটাবেস টেবিল সংজ্ঞা প্রদান করতে পারেন।

Custom Controllers তৈরি করা

Custom Controllers তৈরি করার মাধ্যমে আপনি কাস্টম URL পাথ এবং ফাংশনালিটি যুক্ত করতে পারেন। এটি মূলত Drupal এর রাউটিং সিস্টেমের সাথে কাজ করে এবং ব্যবহারকারীদের জন্য নির্দিষ্ট অ্যাকশন প্রদান করে।

২. Custom Controller তৈরি করার জন্য কোড

  1. Controller ক্লাস তৈরি করুন: src/Controller ডিরেক্টরিতে একটি কাস্টম কন্ট্রোলার ক্লাস তৈরি করুন, যেমন BookController.php:

    namespace Drupal\book_entity\Controller;
    
    use Drupal\Core\Controller\ControllerBase;
    use Symfony\Component\HttpFoundation\Response;
    
    /**
     * Returns responses for the Book entity module routes.
     */
    class BookController extends ControllerBase {
    
      /**
       * Returns a list of books.
       *
       * @return \Symfony\Component\HttpFoundation\Response
       *   A renderable array or string.
       */
      public function bookList() {
        return new Response('Here is a list of books.');
      }
    
      /**
       * Displays details for a specific book.
       *
       * @param int $book_id
       *   The book ID.
       *
       * @return \Symfony\Component\HttpFoundation\Response
       *   A renderable array or string.
       */
      public function bookDetail($book_id) {
        return new Response('Book details for book ID ' . $book_id);
      }
    }
    
  2. Routing কনফিগারেশন তৈরি করুন: book_entity.routing.yml নামের একটি ফাইল তৈরি করুন এবং এতে রাউটিং কনফিগারেশন যোগ করুন:

    book_entity.book_list:
      path: '/books'
      defaults:
        _controller: '\Drupal\book_entity\Controller\BookController::bookList'
        _title: 'Book List'
      requirements:
        _permission: 'access content'
    
    book_entity.book_detail:
      path: '/book/{book_id}'
      defaults:
        _controller: '\Drupal\book_entity\Controller\BookController::bookDetail'
        _title: 'Book Details'
      requirements:
        _permission: 'access content'
      parameters:
        book_id:
          type: 'integer'
    
  3. রাউটিং এবং কন্ট্রোলার কনফিগারেশন নিশ্চিত করা:
    • book_entity.routing.yml ফাইলটি কনফিগার করা হয়ে গেলে, ড্রুপাল সাইটে রাউটিং এবং কন্ট্রোলার অ্যাক্সেস ঠিকভাবে কাজ করবে।

Entity এবং Controller টেস্টিং

এখন, আপনি কাস্টম Entity এবং Controller এর কাজ পরীক্ষা করতে পারেন:

  1. Entity ব্যবহার করে নতুন কনটেন্ট তৈরি করুন: book Entity ব্যবহার করে নতুন কনটেন্ট তৈরি করার জন্য ড্রুপাল অ্যাডমিন প্যানেল ব্যবহার করুন বা কাস্টম ফর্ম তৈরি করুন।
  2. Controller রাউটিং পরীক্ষা করুন: ব্রাউজারে গিয়ে /books এবং /book/{book_id} পাথ ব্যবহার করে কন্ট্রোলারের আউটপুট দেখতে পারবেন।

উপসংহার

ড্রুপালে Custom Entities এবং Controllers তৈরি করার মাধ্যমে আপনি কাস্টম ডেটা টাইপ এবং এর সাথে ইন্টারঅ্যাক্ট করার জন্য কাস্টম লজিক যুক্ত করতে পারেন। এটি সাইটের কার্যকারিতা কাস্টমাইজ করতে সাহায্য করে এবং ড্রুপাল সাইটের জন্য নতুন ফিচার তৈরি করার ক্ষমতা প্রদান করে।

Content added By
Promotion

Are you sure to start over?

Loading...