Usar controladores padrão
Objetivos de aprendizagem
Após concluir esta unidade, você estará apto a:
- Explicar o que é um controlador padrão do Visualforce e descrever seus principais atributos.
- Adicionar um controlador padrão a uma página do Visualforce.
- Exibir dados de um registro recuperado pelo controlador padrão de uma página.
- Escrever uma expressão que usa a notação de pontos para acessar campos de um registro relacionado.
Introdução ao controlador padrão do Visualforce
O Visualforce utiliza o paradigma modelo-visão-controlador (MVC) tradicional e inclui controladores integrados sofisticados para lidar com ações padrão e acesso a dados, fornecendo uma integração simples e estreita com o banco de dados da Lightning Platform. Geralmente, estes controladores integrados são referidos como controladores padrão ou até o controlador padrão.
O padrão de design MVC facilita a separação da exibição e do seu estilo do banco de dados e da lógica subjacente. No MVC, a exibição (página do Visualforce) interage com um controlador, e o controlador fornece funcionalidade à página. Por exemplo, o controlador pode conter a lógica a ser executada quando um botão é clicado. Normalmente, um controlador também interage com o modelo (banco de dados), disponibilizando os dados que a exibição pode querer mostrar ou empurrando as alterações de volta para o banco de dados.
A maioria dos objetos padrão e todos os objetos personalizados têm controladores padrão que podem ser usados para interagir com os dados associados ao objeto, por isso, você não precisa escrever o código para o controlador. Pode estender os controladores padrão para adicionar novas funcionalidades ou criar controladores personalizados de raiz. Aqui você aprenderá sobre os controladores padrão.
Encontrar um ID de registro e adicioná-lo ao URL de solicitação
Forneça o ID de um registro ao controlador padrão adicionando-o como um parâmetro no URL de solicitação.
Se você quiser usar o controlador padrão para referenciar um registro específico, ele precisa conhecer o identificador, ou ID, do registro em questão. Ele utiliza o ID para recuperar os dados e salvá-los de volta no banco de dados quando os dados do registro são modificados.
Quando suas páginas do Visualforce interagem com outras páginas em sua organização, você pode transmitir automaticamente o identificador do registro, e sua página do Visualforce pode usá-lo para pesquisar e exibir os dados daquele registro. Mas durante o desenvolvimento, suas páginas são independentes; então, para que uma página exiba dados de um registro no banco de dados, você precisa fornecer o ID do registro manualmente. A maneira mais fácil de se fazer isso é adicioná-la como um parâmetro GET no URL de solicitação.
- Abra o Developer Console e clique em File (Arquivo) | New (Nova) | Visualforce Page (Página do Visualforce) para criar uma nova página do Visualforce. Insira
AccountSummary
para o nome da página.
- No editor, substitua qualquer marcação pelo seguinte.Essa marcação cria uma caixa, pronta para adicionar informações úteis.
<apex:page> <apex:pageBlock title="Account Summary"> <apex:pageBlockSection> </apex:pageBlockSection> </apex:pageBlock> </apex:page>
- Clique em Preview (Visualizar) para abrir uma visualização da página que você pode consultar enquanto faz alterações. Certifique-se de que pode ver o campo URL da janela de visualização. Você voltará a ele daqui a pouco.
- Em uma janela de navegador separada, vá para a página inicial de sua organização e selecione a guia Contas. Se a guia Contas não estiver visível, mude para o aplicativo Vendas, selecionando Vendas no menu de aplicativos no canto superior direito.
- Verifique se o menu Exibir mostra Todas as contas.
- Na página Todas as contas, clique em um nome de conta.
- Quando a página de detalhes da conta terminar de carregar, verifique o URL para a página. O URL terá o seguinte formato:
https://MyDomainName.lightning.force.com/lightning/r/Account/001D000000JRBes/view
. O identificador do registro, seu ID, é a série de letras e números. Neste exemplo, é001D000000JRBes
(mas em sua organização, ele será diferente). O identificador é único para todos os registros de todos os tipos de objeto em sua organização.
- Selecione o ID do registro e copie-o em sua área de transferência. Antes de sair da página de detalhes da conta, dê uma olhada em toda a página e nas informações nela exibidas. [Alt text: página de detalhes de conta] Este não foi um desvio apenas para obter a ID de um registro. Ao terminarmos, você saberá como criar uma página que exibe as mesmas informações usando código do Visualforce.
- Volte à página de visualização que você abriu a partir do Developer Console. Clique no campo da URL da janela do navegador e, no fim da URL, insira
&id=
. Em seguida, cole a ID do registro que você havia copiado anteriormente. A URL terá o seguinte formato:https://MyDomainName.lightning.force.com/apex/AccountSummary?core.apexpages.request.devconsole=1&id=001D000000JRBes
- Pressione Enter para carregar a página com o novo URL.
Embora carregar a página de visualização com o ID do registro não mude a aparência dela por enquanto, adicionar o ID significa que você pode agora pedir ao controlador padrão que carregue aquele registro e o disponibilize na página.
Para visualizar sua página no contexto do Lightning Experience, retorne à janela principal do navegador onde poderá ver a página de detalhes da conta. Na página de detalhes da conta, abra o console JavaScript do seu navegador e insira o seguinte código. Não se esqueça de substituir pageName
pelo nome da sua página:
$A.get("e.force:navigateToURL").setParams( {"url": "/apex/pageName"}).fire();
Você também pode usar esse método para visualizar uma página com uma ID de registro, adicionando o parâmetro da ID de registro no final da URL no JavaScript:
$A.get("e.force:navigateToURL").setParams( {"url": "/apex/pageName?id=00141000004jkU0AAI"}).fire();
Exibir dados de um único registro
Adicione o controlador padrão às contas da página; depois, faça referência aos campos de conta para exibir os dados de um registro.
Siga estas etapas na URL da página que você acabou de carregar na seção anterior para criar uma página que mostra um resumo da conta.
- No começo da marcação da página, dentro da marca
<apex:page>
, adicione o atributo a seguir.standardController="Account"
Depois que a página for salva, a página de visualização será recarregada como antes, mas dessa vez o controlador padrão das contas estará ativo. Quando a página for carregada, o controlador padrão analisará os parâmetros da URL, encontrará o parâmetro id e usará seu valor para recuperar um registro e disponibilizá-lo para a página. Ainda não é possível ver isso, mas já está lá.
- Adicione as marcações a seguir ao corpo da página.
Name: {! Account.name }
Agora você pode ver que o registro está sendo recuperado. Deve ser possível ver o nome da conta que contém o ID do registro adicionado ao URL.
- Substitua a linha com o nome da conta pela marcação a seguir.O código completo deve ter a seguinte aparência.
Name: {! Account.Name } <br/> Phone: {! Account.Phone } <br/> Industry: {! Account.Industry } <br/> Revenue: {! Account.AnnualRevenue } <br/>
O resultado deve ser um resumo simples da conta.<apex:page standardController="Account"> <apex:pageBlock title="Account Summary"> <apex:pageBlockSection> Name: {! Account.Name } <br/> Phone: {! Account.Phone } <br/> Industry: {! Account.Industry } <br/> Revenue: {! Account.AnnualRevenue } <br/> </apex:pageBlockSection> </apex:pageBlock> </apex:page>
E o que está acontecendo agora? Muita coisa, graças ao controlador padrão!
- Quando a página é carregada e o componente
<apex:page>
é ativado, isso ativa um controlador padrão do objeto conta.
- O controlador padrão vê que há um parâmetro de ID no URL, e pesquisa e recupera o registro de conta correspondente.
- O controlador padrão pega o registro e o coloca em uma variável que o disponibiliza para a página. A variável tem o mesmo nome que o sObject do controlador padrão: Conta. É uma variável de objeto que contém todos os campos disponíveis no sObject Conta.
- Todas as quatro expressões do Visualforce fazem referência à variável Conta. Elas usam a notação de ponto para acessar campos isolados dentro da variável Conta. Ou seja,
{!Account.Name }
obtém o nome da conta e assim por diante.
E o que acontece com o valor da receita? Ele está sendo exibido em notação científica. Como fazer para que ele apareça como moeda?
O número está sendo exibido como valor “bruto” em notação cientifica porque ele está sendo diretamente gerado por uma expressão. Isso coloca o valor bruto diretamente na página. Para controlar a formatação do valor, é preciso usar um componente e dar a esse componente o valor a ser editado. O componente coleta o valor bruto e aplica a formatação correta a ele, e depois insere o resultado na página. Você aprenderá a fazer isso em outro momento. Aqui, estamos interessados apenas em acessar os dados do registro.
Exibir campos de registros relacionados
Use a notação de ponto para exibir dados de registros relacionados.
Por exemplo, ao visualizar os detalhes do objeto Conta, você deve ter notado que o objeto Conta possui um campo chamado Proprietário da conta e que seu tipo é Pesquisar(Usuário). Em outras palavras, este campo tem um relacionamento com o registro de um Usuário. Ao clicar no link do rótulo do campo Proprietário da conta, você descobrirá que o nome do campo é Proprietário.
O relacionamento Proprietário representa um Usuário. E, se a partir de Setup (Configuração), você acessar Object Manager (Gerenciador de objetos) | User (Usuário) | Fields & Relationships (Campos e relacionamentos), você verá que User (Usuário) tem um campo Name (Nome). Vamos usar esta informação para exibi-lo.
No corpo da página, antes do nome da conta, adicione a linha a seguir.
Account owner: {! Account.Owner.Name } <br/>
A notação de ponto (Account.Owner.Name
) indica que você quer percorrer o relacionamento entre os registros. Você sabe que Account.Owner
indica o campo Proprietário do registro de conta. O Nome extra no final indica que o campo Proprietário não é um campo simples que representa uma string, mas um relacionamento com outro registro (é um campo Pesquisar(Usuário)), e que você gostaria de obter o registro representado pelo valor do campo Proprietário (que é um registro de Usuário) e exibir o campo de nome desse registro.
Quero saber mais...
O controlador padrão tem muitas características e nós falamos apenas de algumas delas. Futuramente, você aprenderá muito mais, mas apresentamos aqui alguns destaques.
Além do fácil acesso a dados que ilustramos aqui, o controlador padrão oferece um conjunto de ações padrão, como criar, editar, salvar e excluir, que você pode adicionar às suas páginas usando elementos da interface de usuário padrão, como botões e links. Você aprenderá mais sobre essas ações padrão quando aprender sobre formulários de entrada do Visualforce e sobre salvar as alterações no banco de dados.
As páginas do Visualforce que você deseja incorporar aos layouts de página de um objeto, usar como ações personalizadas específicas de objeto ou usar como cartões móveis no aplicativo Salesforce devem usar o controlador padrão do objeto relevante.
Se você criou seus próprios objetos personalizados (em vez de usar objetos como Conta) e deseja saber como fazer referência a um campo, então você precisa seguir um procedimento um pouco diferente. Em Setup (Configuração), insira Object Manager (Gerenciador de objetos) na caixa Quick Find (Busca rápida) e selecione Object Manager (Gerenciador de objetos) | <seu objeto personalizado> |Fields & Relationships (Campos e relacionamentos). Localize seu campo e selecione-o. Agora, o Nome da API indica o nome do campo que você deve usar em suas páginas do Visualforce. Por exemplo, se o campo se chamar Foo, o Nome da API será Foo__c e você deve fazer referência a esse nome. Algo como: {!myobject__c.foo__c}
.
Embora o controlador padrão seja bastante poderoso, há momentos em que você precisa fazer algo diferente. E isso não é problema no Visualforce. É possível substituí-los ou aumentá-los a qualquer momento e escrever seus próprios controladores, ou extensões para os controladores integrados, usando o código do Apex.
Recursos
- Guia do desenvolvedor do Visualforce: Standard Controllers
- Guia do desenvolvedor do Visualforce: Standard List Controllers
- Blog de desenvolvedores do Salesforce: Twitter Bootstrap and Visualforce in Minutes