Implement FBP dialog-based UI flows with ajax-link/invoke-function, validation, and error rendering rules.
show_multi_dialog() を使う画面を作るshow_multi_dialog() で開始。ajax-link + invoke-function で接続。res_error_message() を設定し return。app_call でHTMLに error_* 要素があるか確認。show_multi_dialog($dialog_name, $template, $title, $width, $fixed_bar_template, $options) の引数役割を明確に使い分ける。title で指定する(テンプレート内に重複タイトルを増やさない)。width で指定する。fixed_bar_template に分離して指定する(例: "_fixed_bar.tpl")。add_tab() を使って に追加する。.multi_dialog_tab_areashow_multi_dialog 再実行、reload_area)を禁止。fields_form_direct 使用時は項目ごとに error_項目名 を用意する。fields_form_original / 手書きinput / checkbox / textarea を含む、POST対象の全入力項目にも error_項目名 を必ず配置する。res_error_message(field, ...) の field 名」と「テンプレート上の error_field クラス」が1対1で存在することを確認する(不足がある状態で完了扱いにしない)。res_error_message() を使う場合、表示先タグ(error_項目名)が存在することを必ず事前確認する。表示タグを設置できない導線(フォーム未描画前・一覧ボタン直叩き等)では show_notification_text() を使う。fields_view_direct を優先し、手書き展開は必要最小限にする。<img> で直接表示する場合、テンプレートから保存パスを直参照せず、表示元クラスに view_image(Controller $ctl) などの画像表示関数を必ず実装してそこを通す。is_saved_file() 確認後に res_saved_image() を返す。ダウンロード用は別に download_file() を用意して res_saved_file() を返す。<img> には原則 max-width:500px; を付け、縦サイズは固定しない。height / max-height で縦横比を崩さない。type="button")をJSで扱う場合、.multi_dialog スコープで要素取得してイベントを張る。ajax-link でフォーム値をPOSTする画面は、テンプレート全体を <form onsubmit="return false;">...</form> で囲み、対象入力の error_* 要素を必ず配置する。