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-এর বৈশিষ্ট্য
- সম্পূর্ণ কাস্টম লজিক: Visualforce পেজের জন্য সম্পূর্ণ নতুন ও স্বাধীন লজিক প্রদান করে।
- প্রচুর নিয়ন্ত্রণ: Custom Controller ব্যবহার করে বিভিন্ন ডেটা প্রসেসিং এবং কাস্টম ফাংশন সংযুক্ত করা যায়।
- 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 হিসেবে
AccountControllerApex ক্লাস ব্যবহৃত হয়েছে। - updateIndustry Method:
Update Industryবাটন ক্লিক করলেIndustryফিল্ডTechnologyহিসেবে আপডেট হবে এবং Visualforce পেজে তা দেখাবে।
Controller Extension
Controller Extension হলো একটি Apex ক্লাস, যা একটি স্ট্যান্ডার্ড বা Custom Controller-এর সাথে যুক্ত করা হয় এবং অতিরিক্ত কার্যক্ষমতা প্রদান করে। এটি মূল Controller-এর কার্যক্ষমতা পরিবর্তন না করে নতুন লজিক যোগ করার জন্য ব্যবহৃত হয়।
Controller Extension-এর বৈশিষ্ট্য
- স্ট্যান্ডার্ড ও কাস্টম কন্ট্রোলার এক্সটেনশন: স্ট্যান্ডার্ড বা কাস্টম কন্ট্রোলারের কার্যক্ষমতা বাড়ানোর জন্য ব্যবহার করা যায়।
- সহজ ইন্টিগ্রেশন: Controller Extension-এর মাধ্যমে মূল Controller-এর ফিচার এবং ফাংশন ব্যবহার করা যায়।
- ডেটা প্রসেসিং ও ফিল্টারিং: 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 হিসেবে
AccountControllerExtensionApex ক্লাস যুক্ত করা হয়েছে। - updateIndustry Method:
Update Industryবাটন ক্লিক করলেIndustryফিল্ডHealthcareহিসেবে আপডেট হবে।
Custom Controller এবং Controller Extension এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | Custom Controller | Controller Extension |
|---|---|---|
| প্রধান উদ্দেশ্য | সম্পূর্ণ নতুন Controller তৈরি করা | বিদ্যমান Controller-এর কার্যক্ষমতা বৃদ্ধি |
| স্ট্যান্ডার্ড কন্ট্রোলার | ব্যবহৃত হয় না | স্ট্যান্ডার্ড বা কাস্টম কন্ট্রোলারের সাথে যুক্ত |
| ডেটা প্রসেসিং | সম্পূর্ণ নতুন ডেটা প্রসেসিং যুক্ত করা হয় | মূল Controller-এর ডেটা প্রসেসিং বাড়ানো |
| লজিক সংযোজন | স্বতন্ত্র কাস্টম লজিক | স্ট্যান্ডার্ড বা কাস্টম লজিকের উপর ভিত্তি করে |
| ব্যবহার ক্ষেত্র | স্বাধীনভাবে কাজ করতে ব্যবহৃত | স্ট্যান্ডার্ড বা কাস্টম কন্ট্রোলারের ফিচার বৃদ্ধি |
Custom Controller এবং Controller Extension এর ভালো অনুশীলন
- Governor Limits মেনে চলুন: কন্ট্রোলারে বড় ডেটা প্রক্রিয়াকরণ এড়িয়ে চলুন এবং SOQL/DML অপ্টিমাইজ করুন।
- SOQL এবং DML অপারেশন সীমাবদ্ধ করুন: Controller ক্লাসে বেশি SOQL বা DML অপারেশন এড়িয়ে চলুন।
- Test Coverage নিশ্চিত করুন: Custom Controller এবং Controller Extension-এর জন্য যথাযথ টেস্ট ক্লাস লিখে Test Coverage নিশ্চিত করুন।
- Reusable Methods তৈরি করুন: Reusable মেথড তৈরি করুন, যাতে কোড পুনরায় ব্যবহার করা যায় এবং কোডিং সহজ হয়।
- 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-এ কার্যকরী ও উন্নত ইউজার ইন্টারফেস তৈরি করা যায়।
Read more