Skip to main content

Utilizar controladores estándar

Objetivos de aprendizaje

Después de completar esta unidad, podrá:

  • Explicar qué es un controlador estándar de Visualforce y describir sus atributos clave.
  • Agregar un controlador estándar a una página de Visualforce.
  • Mostrar datos desde un registro recuperado por el controlador estándar de una página.
  • Redactar una expresión que utilizar la notación de puntos para acceder a campos en un registro relacionado.
Nota

Nota

El reto práctico para esta insignia está localizado al japonés, español (LATAM) y portugués (Brasil). Para cambiar el idioma de su Trailhead Playground, siga estas instrucciones. Puede que la localización esté desactualizada. Si no aprueba el reto con las instrucciones localizadas, cambie el idioma a inglés y la configuración local a Estados Unidos, y vuelva a intentarlo.

Consulte la insignia Trailhead en su idioma para aprender a aprovechar la experiencia traducida de Trailhead.

Introducción al controlador estándar de Visualforce

Visualforce utiliza el modelo tradicional Modelo–Vista–Controlador (MVC), e incluye controladores integrados sofisticados para gestionar acciones estándar y el acceso a datos, proporcionando una integración sencilla y ajustada con la base de datos de la Plataforma Lightning. Generalmente, se hace referencia a estos controladores integrados como controladores estándar o incluso el controlador estándar.

El diseño modelo MVC (Modelo–Vista–Controlador) facilita la tarea de separar la vista y su estilo de la lógica y base de datos subyacente. En MVC, la vista (la página de Visualforce) interactúa con un controlador y el controlador proporciona funciones a la página. Por ejemplo, el controlador puede incluir la lógica para ejecutar cuando se hace clic en un botón. Un controlador también interactúa habitualmente con el modelo (la base de datos): haciendo disponibles datos que la vista podría necesitar mostrar o enviando cambios de vuelta a la base de datos.

La mayoría de objetos estándar y todos los objetos personalizados tienen controladores estándar que se pueden utilizar con los datos asociados con el objeto, de modo que no necesita redactar el código para el controlador por sí mismo. Puede ampliar los controladores estándar para agregar nuevas funciones o crear controladores personalizados desde el principio. Aquí obtendrá información acerca de los controladores estándar.

Buscar un Id. de registro y agregarlo a la URL de solicitud

Proporcione el Id. de registro para un registro al controlador estándar agregándolo como un parámetro en la URL de solicitud.

Si desea utilizar el controlador estándar para hacer referencia a un registro específico, necesita conocer el identificador del registro, o Id., del registro con el que trabajar Utiliza el Id. para recuperar los datos y para volver a guardarlos en la base de datos cuando cambian los datos el registro.

Cuando sus páginas de Visualforce interactúan con otras páginas en su organización, puede pasar automáticamente el identificador del registro y su página de Visualforce para buscar y mostrar los datos de ese registro. Pero durante el desarrollo, sus páginas son independientes, por lo que para que sus páginas muestren datos desde un registro en la base de datos, debe proporcionar el Id. de registro manualmente. La forma más sencilla de hacer esto es agregarlo como un parámetro GET en la URL de solicitud.

  1. Abra Developer Console y haga clic en File (Archivo) | New (Nuevo) | Visualforce Page (Página de Visualforce) para crear una nueva página de Visualforce. Ingrese AccountSummary para el nombre de página.
  2. En el editor, sustituya cualquier marca con lo siguiente.

    <apex:page>
        <apex:pageBlock title="Account Summary">
            <apex:pageBlockSection>
            </apex:pageBlockSection>
        </apex:pageBlock>
    </apex:page>
    Esta marca crea un cuadro, listo para que agregue alguna información útil.
  3. Haga clic en Preview (Vista previa) para abrir una vista previa de su página que podrá ver mientras realiza los cambios. Asegúrese de que puede ver el campo URL para la ventana de vista previa. Volverá justo a esto en unos pocos pasos.
  4. En una ventana del navegador separada, vaya a la página de inicio para su organización y luego seleccione la ficha Cuentas. Si la ficha Cuentas no es visible, cambie a la aplicación Ventas seleccionando Ventas en el menú de la aplicación en la esquina superior derecha.
  5. Asegúrese de que el menú Ver muestra Todas las cuentas.
  6. En la página Todas las cuentas, haga clic en cualquier nombre de cuenta.
  7. Cuando la página de detalles de cuenta finaliza la carga, eche un vistazo a la URL para la página. La URL se verá así: https://MyDomainName.lightning.force.com/lightning/r/Account/001D000000JRBes/view.El identificador del registro, su Id., es la serie de letras y números. En este ejemplo, es 001D000000JRBes (pero será diferente en su organización). Es único en todos los registros de todos los tipos de objeto en su organización.
  8. Seleccione el Id. de registro y cópielo en su portapapeles. Antes de salir de la página de detalles de cuenta, eche un vistazo a la página completa y la información que se muestra en ella. [Texto alternativo: página de detalles de cuenta] No fue un desvío solo para obtener un Id. de registro. Antes de terminar aquí, sabrá cómo crear una página que muestra la misma información, por sí solo, en código de Visualforce.
  9. Vuelva a la página de vista previa que abrió desde Developer Console. Haga clic en el campo URL de la ventana del navegador, y al final de la URL ingrese &id= y luego pegue en el Id. de registro que copió previamente. La URL resultante debe ser algo así: https://MyDomainName.lightning.force.com/apex/AccountSummary?core.apexpages.request.devconsole=1&id=001D000000JRBes
  10. Pulse Volver para cargar la página en la nueva URL.

Aunque la carga de la página de vista previa con el Id. de registro no parece diferente, agregar el Id. significa que ahora puede solicitar al controlador estándar ayuda para cargar ese registro y que esté disponible en la página.

Para realizar una vista previa de su página en el contexto de Lightning Experience, vuelva a la ventana principal de su navegador donde puede ver la página de detalles de la cuenta. Desde la página de detalles de cuentas, abra la consola JavaScript de su navegador e ingrese el siguiente código. No olvide sustituir pageName por el nombre de su página:

$A.get("e.force:navigateToURL").setParams( {"url":"/apex/pageName"}).fire();

Además, puede realizar una vista previa de una página con un Id. de registro de este modo, agregando el parámetro Id. de registro al final de la dirección URL en el JavaScript:

$A.get("e.force:navigateToURL").setParams(
    {"url": "/apex/pageName?id=00141000004jkU0AAI"}).fire();

Mostrar datos desde un registro único

Agregue el controlador estándar para cuentas en la página y luego haga referencia a los campos de cuenta para mostrar datos de un registro.

Siga estos pasos desde la dirección URL de la página que acaba de cargar en la sección anterior para crear una página que muestra el resumen de una cuenta.

  1. Al comienzo de la marca de la página, en la etiqueta <apex:page>, agregue el siguiente atributo.
    standardController="Account"Cuando guarde la página ahora, la página de vista previa se volverá cargar como antes, excepto que esta vez el controlador estándar para cuentas estará activo. Cuando la página se carga, el controlador estándar analiza los parámetros en la URL, busca el parámetro id y utiliza su valor para recuperar un registro y hacerlo disponible en la página. No puede verlo aún, pero está aquí.
  2. En el cuerpo de la página, agregue la siguiente marca.
    Name:{!Account.name }Boom. Ahora puede ver que se recuperó el registro. Debe ver el nombre de la cuenta con el Id. de registro que agregó a la URL.
  3. Sustituya la línea única con el nombre de cuenta con la siguiente marca.

    Name: {! Account.Name } <br/>
    Phone: {! Account.Phone } <br/>
    Industry: {! Account.Industry } <br/>
    Revenue: {! Account.AnnualRevenue } <br/>
    Su código completo debería tener un aspecto similar a este.

    <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>
    El resultado debe ser un resumen de cuenta sencillo. 

Una página de resumen de cuenta sencillo

¿Qué sucederá aquí? Un lote completo, cortesía del controlador estándar.

  1. Cuando se carga la página y se activa el componente <apex:page>, activa un controlador estándar para el objeto de cuenta.
  2. El controlador estándar ve que existe un parámetro de Id. en la URL y busca y recupera el registro de cuenta coincidente.
  3. El controlador estándar coloca el registro en una variable que lo hace disponible en la página. La variable tiene el mismo nombre que el sObject del controlador estándar: Account. Es una variable de objeto y contiene todos los campos disponibles en el sObject de la cuenta.
  4. Las cuatro expresiones de Visualforce hacen referencia a la variable Account. Utilizan la notación de puntos para acceder a campos individuales en la variable Account. Entonces, {!Account.Name } obtiene el nombre de la cuenta y mucho más.

Pero, ¿Qué sucede con el número de ingresos? Está mostrando una notación científica. ¿Cómo puede mostrar eso como una divisa en su lugar?

El motivo por el cual el número se está mostrando como un valor “fila” en una notación científica es que el número se obtuvo directamente mediante una expresión. Pone el valor de fila directamente en la página. Para controlar el formato del valor, necesita utilizar un componente y proporcionar al componente el valor para gestionar. El componente utilizara el valor de fila y le asignará el formato apropiado y luego se encargará de la salida del resultado en la página. Obtendremos más información sobre cómo de hacer esto en otro lugar. Aquí solo estamos interesados en el acceso a los datos del registro.

Mostrar campos desde registro relacionados

Utilice la notación de puntos para mostrar datos desde registros relacionados.

Por ejemplo, mientras visualiza los detalles del objeto para cuenta, es posible que haya observado que el objeto Cuenta tiene un campo denominado Propietario de cuenta y que su tipo es Búsqueda (Usuario). En otras palabras, este campo tiene una relación con un registro Usuario. Al hacer clic en el vínculo de etiqueta de campo Propietario de cuenta, descubrirá que su nombre de campo es Propietario.

La relación Propietario representa un usuario. Además, si desde Setup (Configuración) va a Object Manager | User | Fields & Relationships (Gestor de objetos | Usuario | Campos y relaciones), verá que User (Usuario) tiene un campo Name (Nombre). Utilicemos esta información para mostrarlo.

  1. En el cuerpo de la página, antes del nombre de la cuenta, agregue la siguiente línea.
    Account owner:{!Account.Owner.Name } <br/>

La notación de puntos (Account.Owner.Name) indica que desea atravesar la relación entre los registros. Sabe que Account.Owner indica el campo Propietario del registro de cuenta. El nombre adicional al final indica que el campo de propietario no es un simple campo representando una cadena, sino una relación con otro registro (es una búsqueda [Usuario])) y que desea obtener el registro representado por el valor del campo Propietario (es un registro Usuario) y mostrar el campo Nombre en ese registro.

Más información...

El controlador estándar es bastante potente y solo hemos tocado la superficie. Obtendrá mucha más información acerca de ellos en otra parte, pero aquí le presentamos algunos aspectos destacados.

Además del fácil acceso a datos ilustrado aquí, el controlador estándar proporciona un conjunto de acciones estándar, como crear, modificar, guardar y eliminar que puede agregar a sus páginas utilizando elementos de la interfaz de usuario estándar como botones y vínculos. Obtendrá más información acerca de estas acciones estándar cuando obtenga información acerca de formularios de entrada de Visualforce y vuelva a guardar cambios en la base de datos.

Las páginas de Visualforce que desea integrar en los formatos de página de un objeto, utilizar como acciones personalizadas específicas de objeto o utilizar como tarjetas móviles en la aplicación Salesforce deben utilizar el controlador estándar para el objeto relevante.

Si creó sus propios objetos personalizados (en vez de utilizar objetos como Cuenta) y desea saber cómo hacer referencia a un campo, debe seguir un procedimiento ligeramente diferente. Desde Setup (Configuración), ingrese Object Manager (Gestor de objetos) en el cuadro Quick Find (Búsqueda rápida), luego seleccione Object Manager | <your custom object> | Fields & Relationships (Gestor de objetos | su objeto personalizado | Campos y relaciones). Busque su campo y selecciónelo. El nombre de API ahora indica el nombre del campo que debe utilizar en sus página de Visualforce. Por ejemplo, si su campo se denominó Foo, su nombre de API es Foo__c y debe hacer referencia a él con ese nombre (algo parecido a: {!myobject__c.foo__c}.

A pesar de la potencia del controlador estándar, hay veces que necesita hacer algo diferente. Y eso no supone un problema en Visualforce. En cualquier momento, puede sustituir o aumentar y redactar sus propios controladores o extensiones en los controladores integrados con el código Apex.

Recursos

¡Siga aprendiendo gratis!
Regístrese para obtener una cuenta y continuar.
¿Qué hay para usted?
  • Consiga recomendaciones personalizadas para sus objetivos profesionales
  • Practique sus aptitudes con retos prácticos y pruebas
  • Siga y comparta su progreso con empleadores
  • Póngase en contacto para recibir asesoramiento y oportunidades laborales