Verwenden von Standardsteuerfeldern
Lernziele
Nachdem Sie diese Lektion abgeschlossen haben, sind Sie in der Lage, die folgenden Aufgaben auszuführen:
- Erläutern, was ein Visualforce-Standardsteuerfeld ist, und Beschreiben seiner Hauptattribute
- Hinzufügen eines Standardsteuerfelds zu einer Visualforce-Seite
- Anzeigen von Daten aus einem Datensatz, das vom Standardsteuerfeld einer Seite abgerufen wird
- Schreiben eines Ausdrucks, der die Punktnotation verwendet, um auf Felder in einem verwandten Datensatz zugreifen zu können
Einführung in das Visualforce-Standardsteuerfeld
Visualforce verwendet das herkömmliche MVC-Paradigma (Model-View-Controller) und enthält komplexe integrierte Steuerfelder zum Verarbeiten standardmäßiger Aktionen und des Datenzugriffs, was eine einfache und engmaschige Integration mit der Lightning Platform-Datenbank ermöglicht. Diese integrierten Steuerfelder werden im Allgemeinen als Standardsteuerfelder oder sogar als das Standardsteuerfeld bezeichnet.
Mit dem MVC-Designmuster ist es ein Leichtes, die Ansicht und ihre Gestaltung von der zugrunde liegenden Datenbank und Logik zu trennen. In MVC interagiert die Ansicht (die Visualforce-Seite) mit einem Steuerfeld. Und das Steuerfeld stellt auf der Seite Funktionalitäten bereit. Beispielsweise kann das Steuerfeld die Logik enthalten, ausgeführt zu werden, wenn auf eine Schaltfläche geklickt wird. Ein Steuerfeld interagiert zudem für gewöhnlich mit dem Modell (der Datenbank) und macht so Daten verfügbar, die durch die Ansicht angezeigt werden soll, oder übermittelt Änderung mittels Push zurück zur Datenbank.
Die meisten Standard- und alle benutzerdefinierten Objekte weisen Standardsteuerfelder auf, die verwendet werden können, um mit den Daten zu interagieren, welche mit dem Objekt verknüpft sind. Daher müssen Sie den Code für das Steuerfeld nicht selbst schreiben. Sie können die Standardsteuerfelder erweitern, um neue Funktionalitäten hinzuzufügen. Alternativ können Sie benutzerdefinierte Steuerfelder von Grund auf erstellen. Hier erhalten Sie Informationen über Standardsteuerfelder.
Suchen einer Datensatz-ID und Hinzufügen zum Anforderungs-URL
Geben Sie die Datensatz-ID für einen Datensatz zum Standardsteuerfeld an, indem Sie sie im Anforderungs-URL als einen Parameter hinzufügen.
Wenn Sie das Standardsteuerfeld verwenden möchten, um auf einen bestimmten Datensatz zu verweisen, muss es den Datensatzbezeichner oder die ID des Datensatzes kennen, um damit zu interagieren. Es verwendet die ID zum Abrufen der Daten und zum Speichern dieser in der Datenbank, wenn die Daten des Datensatzes geändert werden.
Wenn Ihre Visualforce-Seiten mit anderen Seiten in Ihrer Organisation interagieren, können Sie den Bezeichner des Datensatzes automatisch einreichen und Ihre Visualforce-Seite kann diesen verwenden, um nach den Daten des Datensatzes zu suchen bzw. um diese anzuzeigen. Aber während der Entwicklung sind Ihre Seiten eigenständig. Damit auf Ihrer Seite Daten aus einem Datensatz in der Datenbank angezeigt werden, müssen Sie die Datensatz-ID daher manuell bereitstellen. Die einfachste Möglichkeit, dies umzusetzen, besteht darin, einen GET-Parameter im Anforderungs-URL hinzuzufügen.
- Öffnen Sie die Developer Console und klicken Sie zum Erstellen einer neuen Visualforce-Seite auf File (Datei) | New (Neu) | Visualforce Page (Visualforce-Seite). Geben Sie
AccountSummary
als Seitennamen an.
- Ersetzen Sie im Editor jedes Markup durch Folgendes. Dieses Markup erstellt ein Feld, dem Sie einige nützliche Informationen hinzufügen können.
<apex:page> <apex:pageBlock title="Account Summary"> <apex:pageBlockSection> </apex:pageBlockSection> </apex:pageBlock> </apex:page>
- Klicken Sie auf Preview (Vorschau), um eine Vorschau Ihrer Seite anzuzeigen, die Sie anzeigen können, während Sie Änderungen vornehmen. Stellen Sie sicher, dass Sie das URL-Feld für das Vorschaufenster anzeigen können. Dies wird in ein paar Schritten erläutert.
- Wechseln Sie in einem separaten Browserfenster zur Startseite Ihrer Organisation und wählen Sie dann die Registerkarte "Accounts" aus. Wenn die Registerkarte "Accounts" nicht sichtbar ist, wechseln Sie zur Anwendung "Sales (Vertrieb)", indem Sie rechts oben im Anwendungsmenü "Sales (Vertrieb)" auswählen.
- Stellen Sie sicher, dass im Menü "View (Anzeigen)" die Option "All Accounts (Alle Accounts)" angezeigt wird.
- Klicken Sie auf der Seite "All Accounts (Alle Accounts)" auf den Namen eines Accounts.
- Wenn die Detailseite für Accounts fertig geladen ist, sehen Sie sich den URL für die Seite an. Der URL sieht in etwa so aus:
https://MyDomainName.lightning.force.com/lightning/r/Account/001D000000JRBes/view
. Der Bezeichner des Datensatzes, seine ID, ist die Reihe aus Buchstaben und Zahlen. In diesem Beispiel ist dies001D000000JRBes
(in Ihrer Organisation unterscheidet sich dies jedoch). Er ist über alle Datensätze von allen Objekttypen in Ihrer Organisation hinweg eindeutig.
- Wählen Sie die Datensatz-ID aus und kopieren Sie sie in die Zwischenablage. Bevor Sie die Detailseite für Accounts verlassen, sehen Sie sich die vollständige Seite und die darin enthaltenen Informationen an. [Alt text: Accountdetailseite] Dies war kein Umweg, um die Datensatz-ID abzurufen. Bevor Sie hiermit fertig sind, wissen Sie, wie Sie eine Seite, die dieselben Informationen zeigt, in Visualforce-Code selbst erstellen können.
- Wechseln Sie zur von Ihnen in der Developer Console geöffneten Vorschauseite zurück. Klicken Sie in das URL-Feld des Browserfensters und geben Sie am Ende des URLs
&id=
ein. Fügen Sie anschließend die zuvor von Ihnen kopierte Datensatz-ID ein. Der URL sollte in etwa so aussehen:https://MyDomainName.lightning.force.com/apex/AccountSummary?core.apexpages.request.devconsole=1&id=001D000000JRBes
- Drücken Sie die Eingabetaste, um die Seite auf dem neuen URL zu laden.
Obwohl das Laden der Vorschauseite ohne darin enthaltener Datensatz-ID sich im Erscheinungsbild nicht unterscheidet, bedeutet das Hinzufügen der ID, dass Sie das Standardsteuerfeld anweisen können, Sie zu unterstützen, indem Sie diesen Datensatz laden und ihn auf der Seite verfügbar machen.
Um eine Vorschau Ihrer Seite im Kontext von Lightning Experience anzuzeigen, kehren Sie zum Hauptfenster Ihres Browsers zurück, wo Sie die Account-Detailseite sehen können. Öffnen Sie von der Account-Detailseite aus die JavaScript-Konsole Ihres Browsers und geben Sie den folgenden Code ein. Vergessen Sie nicht, pageName
durch den Namen Ihrer Seite zu ersetzen:
$A.get("e.force:navigateToURL").setParams( {"url": "/apex/pageName"}).fire();
Sie können auf diese Weise auch eine Vorschau einer Seite mit einer Datensatz-ID anzeigen, indem Sie den Datensatz-ID-Parameter im JavaScript-Code am Ende des URL anfügen:
$A.get("e.force:navigateToURL").setParams( {"url": "/apex/pageName?id=00141000004jkU0AAI"}).fire();
Anzeigen von Daten aus einem einzelnen Datensatz
Fügen Sie das Standardsteuerfeld für Accounts zur Seite hinzu und referenzieren Sie dann Accountfelder, um die Daten eines Datensatzes anzuzeigen.
Führen Sie die folgenden Schritte auf der Seite durch, deren URL Sie im vorherigen Abschnitt geladen haben, um eine Seite zu erstellen, die eine Accountzusammenfassung zeigt.
- Fügen Sie am Anfang Ihres Seiten-Markups innerhalb des
<apex:page>
-Tags das folgende Attribut hinzu.standardController="Account"
Wenn Sie die Seite nun speichern, wird die Vorschauseite wie zuvor geladen, außer das Standardsteuerfeld für Accounts ist aktiv. Wenn die Seite geladen wird, analysiert das Standardsteuerfeld die Parameter im URL, sucht nach dem "id"-Parameter und verwendet seinen Wert, um einen Datensatz abzurufen und ihn für die Seite verfügbar zu machen. Sie können ihn noch nicht sehen, er ist aber vorhanden.
- Fügen Sie das folgende Markup im Textteil der Seite hinzu.
Name: {! Account.name }
Nun können Sie sehen, dass der Datensatz abgerufen wird! Sie sollten den Namen des Accounts anzeigen können, der über die Datensatz-ID verfügt, die Sie zum URL hinzugefügt haben.
- Ersetzen Sie die einzelne Zeile mit dem Accountnamen durch das folgende Markup. Ihr vollständiger Code sollte wie folgt aussehen.
Name: {! Account.Name } <br/> Phone: {! Account.Phone } <br/> Industry: {! Account.Industry } <br/> Revenue: {! Account.AnnualRevenue } <br/>
Das Ergebnis sollte eine einfache Accountzusammenfassung sein.<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>
Was geschieht hier also? Jede Menge dank des Standardsteuerfelds!
- Wenn die Seite geladen und die
<apex:page>
-Komponente aktiviert wird, aktiviert sie ein Standardsteuerfeld für das Account-Objekt.
- Das Standardsteuerfeld erkennt, dass im URL ein ID-Parameter vorliegt, und sucht nach dem übereinstimmenden Account-Datensatz und ruft ihn ab.
- Das Standardsteuerfeld übernimmt den Datensatz und versetzt ihn in eine Variable, die ihn für die Seite verfügbar macht. Die Variable verfügt über denselben Namen wird das "sObject" des Standardsteuerfelds: Account. Es ist eine Objektvariable und enthält alle der im "sObject" des Accounts verfügbaren Felder.
- Die vier Visualforce-Ausdrücke verweisen alle auf die Variable "Account". Sie verwenden die Punktnotation, um auf einzelne Felder in der Variable "Account" zuzugreifen.
{!Account.Name }
ruft demnach also den Namen des Accounts auf usw.
Wie verhält es sich jedoch mit der Umsatzzahl? Sie wird in einer wissenschaftlichen Schreibweise angezeigt. Wie können Sie sie stattdessen als Währung anzeigen?
Der Grund dafür, dass die Zahl als ein "Rohwert" in wissenschaftlicher Schreibweise angezeigt wird, besteht darin, dass die Zahl direkt durch einen Ausdruck ausgegeben wird. Er versetzt den Rohwert direkt auf die Seite. Zum Steuern der Formatierung des Werts müssen Sie eine Komponente verwenden und dieser Komponente einen zu verarbeitenden Wert zuweisen. Die Komponente übernimmt den Rohwert und formatiert ihn entsprechend und kümmert sich dann um die Ausgabe des Ergebnisses auf der Seite. Informationen darüber finden Sie an anderer Stelle. Hier geht es nur um den Zugriff auf die Datensatzdaten.
Anzeigen von Daten aus verwandten Datensätzen
Verwenden Sie die Punktnotation zum Anzeigen von Daten aus verwandten Datensätzen.
Beispielsweise haben Sie bemerkt, während Sie die Objektdetails für Account anzeigen, dass das Account-Objekt über ein Feld mit dem Namen "Account Owner (Accountinhaber)" verfügt und dass dessen Typ "Lookup(User)" lautet. Dieses Feld weist demnach eine Beziehung zu einem Benutzerdatensatz auf. Indem Sie auf den Link für die Feldbezeichnung "Account Owner (Accountinhaber)" klicken, erfahren Sie, dass dessen Feldname "Owner (Inhaber)" lautet.
Die Beziehung "Owner (Inhaber)" stellt einen Benutzer dar. Und wenn Sie von Setup aus zu Object Manager (Objekt-Manager) | User (Benutzer) | Fields & Relationships (Felder und Beziehungen) wechseln, werden Sie feststellen, dass "User (Benutzer)" über das Feld "Name" verfügt. Diese Informationen werden im Folgenden verwendet, um es anzuzeigen.
Fügen Sie im Textteil der Seite vor dem Accountnamen die folgende Zeile hinzu.
Account owner: {! Account.Owner.Name } <br/>
Die Punktnotation (Account.Owner.Name
) zeigt an, dass Sie die Beziehung zwischen den Datensätzen traversieren möchten. Sie wissen, dass Account.Owner
das Feld "Owner (Inhaber)" des Account-Datensatzes anzeigt. Der zusätzliche Name am Ende weist darauf hin, dass es sich beim Inhaberfeld um kein einfaches Feld handelt, das eine Zeichenfolge darstellt, sondern um eine Beziehung zu einem anderen Datensatz (es ist ein "Lookup(User)"). Zudem weist es darauf hin, dass Sie den Datensatz abrufen möchten, der durch den Wert des Felds "Owner (Inhaber)" (es ist ein Benutzerdatensatz) dargestellt wird, und das Feld "Name" in diesem Datensatz anzeigen möchten.
Weitere Infos
Das Standardsteuerfeld ist ziemlich leistungsfähig, wobei bisher nur ein Bruchteil der Möglichkeiten ausgeschöpft wurde. Sie erhalten weitere Informationen darüber an anderer Stelle. Im Folgenden finden Sie jedoch einige Highlights.
Zusätzlich zum hier veranschaulichten einfachen Datenzugriff bietet das Standardsteuerfeld eine Reihe an Standardaktionen wie das Erstellen, Bearbeiten, Speichern und Löschen, die Sie zu Ihren Seiten mithilfe von standardmäßigen Benutzeroberflächenelementen wie Schaltflächen und Links hinzufügen können. Sie erhalten weitere Informationen über diese Standardaktionen, wenn Sie Informationen über Visualforce-Eingabeformulare und über das Speichern der Änderungen in der Datenbank erhalten.
Visualforce-Seiten, die Sie in Seitenlayouts eines Objekts einbetten möchten, als objektspezifische benutzerdefinierte Aktionen oder als mobile Karten in der Salesforce-Anwendung verwenden möchten, müssen das Standardsteuerfeld für das relevante Objekt verwenden.
Wenn Sie Ihre eigenen benutzerdefinierten Objekte (anstelle der Verwendung von Objekten wie Account) erstellt haben und wissen möchten, wie ein Feld referenziert wird, müssen Sie eine etwas abweichende Prozedur befolgen. Geben Sie in Setup im Feld "Quick Find (Schnellsuche)" den Text "Object Manager" (Objekt-Manager) ein und wählen Sie dann Object Manager (Objekt-Manager) | <Ihr benutzerdefiniertes Objekt> | Fields & Relationships (Felder und Beziehungen) aus. Suchen Sie Ihr Feld und wählen Sie es aus. Der API-Name zeigt nun den Namen des Felds an, das Sie auf Ihren Visualforce-Seiten verwenden müssen. Wenn Ihr Feld beispielsweise den Namen "Foo" aufwies, ist sein API-Name "Foo__c" und Sie referenzieren es mit diesem Namen, und zwar in etwa so: {!myobject__c.foo__c}
.
Auch wenn das Standardsteuerfeld sehr leistungsfähig ist, gibt es Situationen, in denen Sie etwas anderes vornehmen müssen. Und das ist in Visualforce kein Problem. Sie können es jederzeit ersetzen oder erweitern und Ihre eigenen benutzerdefinierten Steuerfelder oder Erweiterungen für die integrierten Steuerfelder mithilfe von Apex-Code schreiben.
Ressourcen
- Visualforce Developer Guide: Standard Controllers
- Visualforce Developer Guide: Standard List Controllers
- Salesforce Developers Blog: Twitter Bootstrap and Visualforce in Minutes