デベロッパー試験勉強時にまとめたメモ書きです。内容が間違っていたら優しくご指摘ください。
他投稿はデベロッパー試験に関する記事からどうぞ。
あくまでも個人のメモ書きなので信用しすぎてはいけません。
参考にSalesforce公式ページを載せていますので、最新かつ正しい情報をご確認ください。
Visualforce
・親レコードへのアクセス:標準コントローラと差し込み構文
・子レコードへのアクセス:コントローラ拡張
・Visualforceでできること:PDF表示、ダッシュボード表示
・使用する画像、スタイルシート、JS、ライブラリは静的リソースに入れる
・外部JSファイルの読込タグ<apex:includeScript>
または <script>
・IDの取得:ApexPages.currentPage().getParameters().get('Id')
・データ駆動型、ホスト型プラットフォーム、自動的にアップグレード
・Visualforceページの表示をLightning Experienceのようにする: LightningStylesheets 属性
コントローラとコントローラ拡張
標準コントローラ
標準ページと同じ機能で構成されている
save、quicksave(リダイレクトなし)、edit、delete、cancel、list(標準リストページのPageReferenceを返す)
<apex:page standardController="MyCustomObject__c">
</apex:page>
標準リストコントローラ
レコードのセットを処理する既存のSalesforceページにはリストページ、関連リスト、および一括アクションページが含まれる
save、quicksave(リダイレクトなし)、cancel、list(標準リストページのPageReferenceを返す)、
first、last、next、previous
<apex:page standardController="Account" recordSetVar="accounts">
カスタムコントローラとカスタムリストコントローラ
Apexで記述されたクラスであり、標準のコントローラーを利用せずに、ページのすべてのロジックを実装する
新しいナビゲーション要素または動作を定義できるが、標準コントローラーで既に提供されている機能も再実装する必要がある
カスタムコントローラのコンストラクタ
public MyController() {
account = [SELECT Id, Name, Site FROM Account WHERE Id = :ApexPages.currentPage().getParameters().get('id')];
}
★コンストラクタは引数無し!!
<apex:page controller="myController" tabStyle="Account">
※<apex:page>
タグで standardController 属性を使用する場合、同時に controller 属性を使用することはできません。
コントローラ拡張
標準またはカスタムコントローラの動作を追加またはオーバーライドする
標準コントローラの機能を使用するが、編集、参照、または削除などのアクションを上書きする、または新しいアクションを追加するときに使う。
コントローラ拡張のコンストラクタ
public myControllerExtension(ApexPages.StandardController stdController) {
this.acct = (Account)stdController.getRecord();
}
★コンストラクタの引数はコントローラ
<apex:page standardController="Account" extensions="myControllerExtension">
※カスタムコントローラとコントローラ拡張クラスはデフォルトでシステムモードで実行される。
共有設定を考慮する場合はwith sharing を入れる。
Lightning Web Component
・HTML、JS、メタデータ(CSS)
・コンポーネント定義 イベントは親へ(上へ)、プロパティは子へ(下へ)
・標準コンポーネント
アコーディオン、ボタン、カード、コンボボックス、データテーブル、ファイルアップロード、
formatted○○、input〇〇、メニュー、プログレスバー、パンくず、ツリー
・LWCを作成できるのは SalesforceCLIとVSCode!!
・オブジェクトと項目の使用 →JavaScript の import 構文を使用する
オブジェクトへの参照:import ACCOUNT_OBJECT from '@salesforce/schema/Account';
項目の参照:import ACCOUNT_NAME_FIELD from '@salesforce/schema/Account.Name';
項目の参照2:import ACCOUNT_OWNER_NAME_FIELD from '@salesforce/schema/Account.Owner.Name';
Apexメソッドのインポート →JavaScript のimport 構文を使用する
import apexMethodName from '@salesforce/apex/Namespace.Classname.apexMethodReference';
※Apexメソッドの公開 →@AuraEnabled
を使用する、メソッドはstatic で、かつ global または public のいずれかである必要がある
※クライアントにApexメソッドの結果をキャッシュ @AuraEnabled(cacheable=true) ※メソッドはデータの取得のみ、変更不可
・Salesforce データを読み取る → @wire を使用して、Apex メソッドを指定する。
プロパティまたは関数を結び付ける (@wire
) ことでデータを受信できる
★@api
:プロパティやメソッドを公開する、変更時に再描画する
★@track
:プライベートなプロパティを監視する、変更時に再描画する
★@wire
:プロパティまたは関数をデコレートする
Lightning Web componentのリソース
静的リソース:@salesforce/resourceUrl から静的リソースをインポートします。静
コンテンツアセットファイル: @salesforce/contentAssetUrl からコンテンツアセットファイルをインポートします。
SVG リソース:コンポーネントの HTML テンプレートに直接追加する。またはSVG リソースを静的リソースとしてアップロードしてから、コンポーネントの JavaScript ファイルにインポートする。
カスタム表示ラベル:@salesforce/label から表示ラベルをインポートします。
Internationalization プロパティ:@salesforce/i18n から internationalization プロパティをインポートします。世界中のユーザ、言語、通貨、タイムゾーンに適合させることができます。
現在のユーザ: @salesforce/user を使用します。
現在のエクスペリエンスビルダーサイト:@salesforce/community から現在のエクスペリエンスビルダーサイトに関する情報をインポートします。
権限の確認:@salesforce/userPermission および @salesforce/customPermission から Salesforce 権限をインポートします。
クライアントのフォーム要素:@salesforce/client/formFactor をインポートします。
その他
・Lightning ページの標準コンポーネント
アコーディオン、活動、Chatter、Analytics ダッシュボード、Next Best Action、強調表示パネルリストビュー、Quip、
最近使ったデータ、レコードの詳細、関連レコード、レポートグラフ、リッチテキスト、Visualforce ページ
・auraコンポーネントのJavaScriptで定義されているもの クライアント側のコントローラ、ヘルパー、レンダラ
・SLDS = SalesforceLightning Design System
CSSを1 行も記述せずに Lightning Experience のデザインを持つアプリケーションを構築できる。CSSフレームワーク
参考
↓Salesforce公式の開発者ガイドやヘルプページなどのリンクになっています
Visualforce
カスタムコントローラとコントローラ拡張
Lightning Web component
SLDS
デベロッパー試験に関する記事
Salesforce 認定 Platform デベロッパー 合格までのあれこれ
デベロッパー勉強メモ:Salesforceの基本
デベロッパー勉強メモ:データモデリング
デベロッパー勉強メモ:プロセスの自動化とロジック①
デベロッパー勉強メモ:プロセスの自動化とロジック②
デベロッパー勉強メモ:ユーザインタフェース ←当記事
デベロッパー勉強メモ:テスト、デバッグ、リリース