Custom Controller এবং Controller Extensions

Computer Programming - এপেক্স (Apex) Apex এবং Visualforce Integration (Apex and Visualforce Integration) |
322
322

Custom Controller এবং Controller Extension Salesforce-এ Visualforce পেজের সাথে Apex ক্লাসের মাধ্যমে কাস্টম লজিক এবং ডেটা প্রসেসিং সংযুক্ত করার দুটি পদ্ধতি। Custom Controller ব্যবহার করে সম্পূর্ণ নতুন Controller তৈরি করা হয়, যেখানে Controller Extension-এর মাধ্যমে একটি স্ট্যান্ডার্ড বা Custom Controller-এ নতুন কার্যক্ষমতা যোগ করা যায়। এই দুটি পদ্ধতির মাধ্যমে Apex কোডের জটিল লজিক Visualforce পেজে প্রয়োগ করা সহজ হয়।


Custom Controller

Custom Controller হলো এমন একটি Apex ক্লাস, যা Visualforce পেজের জন্য কাস্টম লজিক প্রদান করে। Custom Controller সাধারণত যখন স্ট্যান্ডার্ড অবজেক্টের উপর নির্ভরশীল নয়, বরং এককভাবে কাস্টম লজিক প্রয়োগ করতে হয়, তখন ব্যবহার করা হয়।

Custom Controller-এর বৈশিষ্ট্য

  1. সম্পূর্ণ কাস্টম লজিক: Visualforce পেজের জন্য সম্পূর্ণ নতুন ও স্বাধীন লজিক প্রদান করে।
  2. প্রচুর নিয়ন্ত্রণ: Custom Controller ব্যবহার করে বিভিন্ন ডেটা প্রসেসিং এবং কাস্টম ফাংশন সংযুক্ত করা যায়।
  3. Independent Functionality: এটি নির্দিষ্ট স্ট্যান্ডার্ড অবজেক্টের উপর নির্ভরশীল নয়।

Custom Controller উদাহরণ

Apex Class (Custom Controller)

public class AccountController {
    public Account acc { get; set; }

    public AccountController() {
        acc = [SELECT Id, Name, Industry FROM Account LIMIT 1];
    }

    public void updateIndustry() {
        acc.Industry = 'Technology';
        update acc;
    }
}

Visualforce Page

<apex:page controller="AccountController">
    <h1>Account Details</h1>
    <p>Account Name: {!acc.Name}</p>
    <p>Industry: {!acc.Industry}</p>

    <apex:commandButton value="Update Industry" action="{!updateIndustry}" rerender="output"/>
</apex:page>
  • controller="AccountController": Custom Controller হিসেবে AccountController Apex ক্লাস ব্যবহৃত হয়েছে।
  • updateIndustry Method: Update Industry বাটন ক্লিক করলে Industry ফিল্ড Technology হিসেবে আপডেট হবে এবং Visualforce পেজে তা দেখাবে।

Controller Extension

Controller Extension হলো একটি Apex ক্লাস, যা একটি স্ট্যান্ডার্ড বা Custom Controller-এর সাথে যুক্ত করা হয় এবং অতিরিক্ত কার্যক্ষমতা প্রদান করে। এটি মূল Controller-এর কার্যক্ষমতা পরিবর্তন না করে নতুন লজিক যোগ করার জন্য ব্যবহৃত হয়।

Controller Extension-এর বৈশিষ্ট্য

  1. স্ট্যান্ডার্ড ও কাস্টম কন্ট্রোলার এক্সটেনশন: স্ট্যান্ডার্ড বা কাস্টম কন্ট্রোলারের কার্যক্ষমতা বাড়ানোর জন্য ব্যবহার করা যায়।
  2. সহজ ইন্টিগ্রেশন: Controller Extension-এর মাধ্যমে মূল Controller-এর ফিচার এবং ফাংশন ব্যবহার করা যায়।
  3. ডেটা প্রসেসিং ও ফিল্টারিং: Custom লজিক যোগ করে ডেটা প্রসেসিং ও ফিল্টারিং সহজ হয়।

Controller Extension উদাহরণ

Apex Class (Controller Extension)

public class AccountControllerExtension {
    private final Account acc;

    public AccountControllerExtension(ApexPages.StandardController controller) {
        this.acc = (Account)controller.getRecord();
    }

    public void updateIndustry() {
        acc.Industry = 'Healthcare';
        update acc;
    }
}

Visualforce Page

<apex:page standardController="Account" extensions="AccountControllerExtension">
    <h1>Account Details</h1>
    <p>Account Name: {!Account.Name}</p>
    <p>Industry: {!Account.Industry}</p>

    <apex:commandButton value="Update Industry" action="{!updateIndustry}" rerender="output"/>
</apex:page>
  • extensions="AccountControllerExtension": Controller Extension হিসেবে AccountControllerExtension Apex ক্লাস যুক্ত করা হয়েছে।
  • updateIndustry Method: Update Industry বাটন ক্লিক করলে Industry ফিল্ড Healthcare হিসেবে আপডেট হবে।

Custom Controller এবং Controller Extension এর মধ্যে পার্থক্য

বৈশিষ্ট্যCustom ControllerController Extension
প্রধান উদ্দেশ্যসম্পূর্ণ নতুন Controller তৈরি করাবিদ্যমান Controller-এর কার্যক্ষমতা বৃদ্ধি
স্ট্যান্ডার্ড কন্ট্রোলারব্যবহৃত হয় নাস্ট্যান্ডার্ড বা কাস্টম কন্ট্রোলারের সাথে যুক্ত
ডেটা প্রসেসিংসম্পূর্ণ নতুন ডেটা প্রসেসিং যুক্ত করা হয়মূল Controller-এর ডেটা প্রসেসিং বাড়ানো
লজিক সংযোজনস্বতন্ত্র কাস্টম লজিকস্ট্যান্ডার্ড বা কাস্টম লজিকের উপর ভিত্তি করে
ব্যবহার ক্ষেত্রস্বাধীনভাবে কাজ করতে ব্যবহৃতস্ট্যান্ডার্ড বা কাস্টম কন্ট্রোলারের ফিচার বৃদ্ধি

Custom Controller এবং Controller Extension এর ভালো অনুশীলন

  1. Governor Limits মেনে চলুন: কন্ট্রোলারে বড় ডেটা প্রক্রিয়াকরণ এড়িয়ে চলুন এবং SOQL/DML অপ্টিমাইজ করুন।
  2. SOQL এবং DML অপারেশন সীমাবদ্ধ করুন: Controller ক্লাসে বেশি SOQL বা DML অপারেশন এড়িয়ে চলুন।
  3. Test Coverage নিশ্চিত করুন: Custom Controller এবং Controller Extension-এর জন্য যথাযথ টেস্ট ক্লাস লিখে Test Coverage নিশ্চিত করুন।
  4. Reusable Methods তৈরি করুন: Reusable মেথড তৈরি করুন, যাতে কোড পুনরায় ব্যবহার করা যায় এবং কোডিং সহজ হয়।
  5. Exception Handling যুক্ত করুন: Exception Handling নিশ্চিত করতে try-catch ব্লক ব্যবহার করুন।

Custom Controller এবং Controller Extension উদাহরণ: টেস্ট ক্লাস সহ

Apex Class: Custom Controller

public class AccountController {
    public Account acc { get; set; }

    public AccountController() {
        acc = [SELECT Id, Name, Industry FROM Account LIMIT 1];
    }

    public void updateIndustry() {
        acc.Industry = 'Technology';
        update acc;
    }
}

Apex Class: Controller Extension

public class AccountControllerExtension {
    private final Account acc;

    public AccountControllerExtension(ApexPages.StandardController controller) {
        this.acc = (Account)controller.getRecord();
    }

    public void updateIndustry() {
        acc.Industry = 'Healthcare';
        update acc;
    }
}

Test Class: Custom Controller and Extension

@isTest
public class AccountControllerTest {
    @isTest
    static void testCustomController() {
        Account acc = new Account(Name = 'Test Account');
        insert acc;

        AccountController controller = new AccountController();
        controller.updateIndustry();

        Account updatedAcc = [SELECT Industry FROM Account WHERE Id = :acc.Id];
        System.assertEquals('Technology', updatedAcc.Industry);
    }

    @isTest
    static void testControllerExtension() {
        Account acc = new Account(Name = 'Test Account');
        insert acc;

        ApexPages.StandardController stdController = new ApexPages.StandardController(acc);
        AccountControllerExtension extension = new AccountControllerExtension(stdController);
        extension.updateIndustry();

        Account updatedAcc = [SELECT Industry FROM Account WHERE Id = :acc.Id];
        System.assertEquals('Healthcare', updatedAcc.Industry);
    }
}
  • testCustomController(): Custom Controller-এর জন্য টেস্ট ক্লাস তৈরি করা হয়েছে, যেখানে updateIndustry() মেথড সঠিকভাবে কাজ করছে কি না যাচাই করা হয়েছে।
  • testControllerExtension(): Controller Extension-এর জন্য টেস্ট ক্লাস তৈরি করা হয়েছে, যা Standard Controller-এর কার্যক্ষমতা বৃদ্ধি করে।

সারসংক্ষেপ

Custom Controller এবং Controller Extension Visualforce পেজের জন্য Apex লজিক সংযুক্ত করার দুটি পদ্ধতি। Custom Controller সম্পূর্ণ নতুন লজিক প্রদান করে, যেখানে Controller Extension মূল Controller-এর কার্যক্ষমতা বাড়ায়। টেস্ট ক্লাস ও সঠিক অপ্টিমাইজেশন নিশ্চিত করে এই দুটি পদ্ধতির মাধ্যমে Salesforce-এ কার্যকরী ও উন্নত ইউজার ইন্টারফেস তৈরি করা যায়।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion