Создать кастомную кнопку на кастомном объекте -?

Всем привет.
Такой вопрос:
Есть кастомный объект, хочу создать для него кастомную кнопку visualforce.
Создал кастомный контроллер, типа такого

public with sharing class Customer_Request{
 
    private final Customer_Request__c CRequest;
    //Properties
    public String Name{get;set;}
    public Id Id{get;set;}
    public String AccountId{get;set;}
    
    public Customer_Request() {
        CRequest = [SELECT Id, Account__c, Activated_Date__c, Contact__c, CreatedById,
                          CurrencyIsoCode, End_date__c, LastModifiedById, Opportunity__c,
                          OwnerId, Name, Date_of_creation__c, Status__c
                          FROM Customer_Request__c 
                   WHERE Id = :ApexPages.currentPage().getParameters().get('id')];
        Name = CRequest.Name;
        Id = CRequest.Id;
        AccountId = CRequest.Account__c;
    }
 
    public Customer_Request__c getRequest() {
        return CRequest;
    }
 
    public PageReference save() {
        update CRequest;
        return null;
    }
}

Создал visualforce страничку

<apex:page Controller="Customer_Request" tabStyle="Account">
    <apex:pageBlock title="Customer Request Summary">
        <apex:pageBlockSection >
          Name: {!Name } <br/>
            Id: {!Id} <br/> 
            AccountId: {!AccountId} <br/>
        </apex:pageBlockSection>
    </apex:pageBlock>    
</apex:page>

Создаю в сетапе через New Bottn новую кнопку, выбираю Content Source = visualforce page - но никакие страницы недоступны…
1
Как мне увидеть в этом конструкторе свою страницу с кастомным контроллером?

1 Like

Вам нужно использовать на VF странице standardController. Попробуйте использовать связку standardController и extensions

А можно пример? Со стандартными я разобрался, как работает, а с кастомными - затык (((

Вы что еще с classic до сих пор работаете, бедолаги ? Вам нужно переходить на lighting, потом забудете такие проблемы.

2 Likes

Примерно так:

<apex:page standardController="Customer_Request__c" extensions="SomeNameController" tabStyle="Account">
    <apex:pageBlock title="Customer Request Summary">
        <apex:pageBlockSection >
			Name: {!Name } <br/>
            Id: {!Id} <br/> 
            AccountId: {!AccountId} <br/>
        </apex:pageBlockSection>
    </apex:pageBlock>    
</apex:page>

и экстеншнс

public with sharing class SomeNameController{

	private Id id;
	private final Customer_Request__c CRequest;
    //Properties
    public String Name{get;set;}
    public Id Id{get;set;}
    public String AccountId{get;set;}
	
	public SomeNameController(ApexPages.StandardController controller) {
		this.id = controller.getRecord().Id;
		
		this.CRequest = [SELECT Id, Account__c, Activated_Date__c, Contact__c, CreatedById,
                          CurrencyIsoCode, End_date__c, LastModifiedById, Opportunity__c,
                          OwnerId, Name, Date_of_creation__c, Status__c
                          FROM Customer_Request__c 
                   WHERE Id = :id];
        this.Name = CRequest.Name;
        this.Id = CRequest.Id;
        this.AccountId = CRequest.Account__c;
	}
	
}
3 Likes

Спасибо!