サポート > リポジトリ > 画面機能 > 画面遷移 (4) 詳細画面から更新画面へ遷移する(更新データがない場合、登録画面へ自動的に遷移する)

詳細画面から任意のモデルの更新画面へ遷移します。同時にパラメータを渡します。さらに更新データがない場合、登録画面へ自動的に遷移するようにします。

顧客モデルに、独自ボタンを用意した例です。 このボタンは別モデル(サポートモデル)の更新画面を直接、開くようになっています。

図1 顧客モデルからサポートモデルの更新画面を開く
ここで、顧客モデルとサポートモデルには、モデル参照の関係は定義していません。ただし顧客モデルの主キーとサポートモデルの主キーは 1:1 の関係性がある、とします。

最初に更新ボタンを押下したとき、(この顧客に紐づく)サポートは存在しません。このとき、自動的に更新画面から登録画面へ遷移しています。さらに、登録画面には顧客モデルのいくつかの値が引き継がれています。

図2 データ未登録の場合は新規画面へ遷移する

サポートデータの新規登録が完了しました。

図3 サポートデータの新規登録が完了

図1に戻ります。再び、同じ顧客データの詳細画面から「サポート更新」ボタンを押下すると、今度は紐づくデータが存在するため、更新画面が開きます。つまりデータが存在する場合は、更新処理を行えるようになっています。

図4 データ登録後は更新画面へ遷移する

図1で示した「顧客モデル」の定義は次のとおりです。

図5 顧客モデル

対応する「サポートモデル」の定義は次のとおりです。顧客モデルとの外部キー関係は定義していません。「顧客名」「顧客名かな」「顧客電子メール」は参照ではなく、文字列型としています。

図6 サポートモデルの定義

顧客モデルに用意する独自ボタン

顧客モデル側に、サポートモデルの更新画面を開くための独自ボタンを用意します。

図7 独自ボタンの定義
項目 説明 入力例
画面名 どの画面にボタンを追加するかを指定します。ここでは"詳細表示画面"とします。 詳細表示画面
表示する 有効にします。 (チェック)
表示条件 常にボタンを表示する場合、本欄は空白とします。条件については「ボタン表示条件」をお読みください。
ボタン名 任意の名前を指定します。式で表現することもできます。 サポート更新
イベント名 遷移した画面に対するイベントを指定します。更新イベントは "Update" です。 Update
アクション名 遷移する画面を指定します。更新画面は "update" + モデル名(キャメル記法)です。 updateSupport
追加パラメータ 遷移する画面へパラメータを指定します。ここでは紐づくサポートモデルの主キーと、顧客モデルの名前などのデータを渡します。 (後述)
イベント名は大文字小文字を区別します。正確に入力してください。
キャメル記法 : 先頭の1文字を大文字とします。モデル名に含まれるアンダースコアは取り除き、その次の文字を大文字にします。例えば my_funny_valentine は MyFunnyValentine になります。

追加パラメータ

更新画面(または新規登録画面)に対して、直接、値を渡すことができます。

書式は「キー=値」となっています。キー部分は(遷移先モデルの)項目IDになります。
値部分にプレースホルダ (${ ... }) を用いて、遷移元の項目の値を渡すことができます。

複数のパラメータを渡す場合は&で区切ります。

ここで示した例を実現するための追加パラメータは次のようになります。イコールの左側はサポートモデルの項目です。イコールの右側は顧客モデルの項目です。

supportid=${id}&customername=${name}&customerkananame=${kananame}&customeremail=${email}
今回の例では、通常用意される更新ボタンではなく、オリジナルボタンを使っています。これはボタンを配置する画面内の値を、更新処理を行うモデル(の登録・更新画面)に引き継ぐためです。

制約

追加パラメータに記載する項目名に以下を指定することはできません。

  • 繰り返し項目
  • 繰り返しコンテナ項目
  • このモデルに紐づく外部キー子モデル

サポートモデルの設定

「画面 > 更新 > 更新画面」にある「更新対象データが存在しないとき登録画面に遷移する」を有効にします。

図8 更新対象データが存在しないとき登録画面に遷移する

顧客名

顧客モデルから渡されてきた初期値を受け取るためにREQUEST関数を適用します。

REQUEST()
図9 顧客名の初期値を外部から取得する

顧客名かな

同じくREQUEST関数を適用します。

図10 顧客名かなの初期値を外部から取得する

顧客電子メール

同じくREQUEST関数を適用します。

図11 顧客電子メールの初期値を外部から取得する
項目名と違うパラメータの値を反映させる場合は REQUEST("パラメータ名") のように記述します。

「画面遷移 (1) 詳細画面から登録画面へ遷移する > 仕様・制約」をお読みください。

Wagby Developer Day 2017