[CakePHP] XformHelperの使い方




CakePHPのBakeでは確認画面が作られません。
確認画面を作るのはかなり面倒なので何か良いツールがないかと探していたところ「XformHelper」に出会いました。
設定から利用までさほど苦労する所もなく簡単に使うことができました。

都道府県を登録するテーブルを使った例を記載します。
Bakeで作成したファイルを改造していきます。
新規追加「add」に確認画面をつけてみましょう。

テーブル名:prefecture
カラム名:id(主キー・AI),name

フォームをエレメント化する。
/views/elements/ の下に
「controller名_function名.ctp」ファイルを作る。
今回の場合は/views/elements/prefectures_add.ctp

「prefectures_add.ctp」の内容

フォームはXformjpにし、エラー表示はformにするのがポイント。
エラーはXformではなく、CakePHPのデフォルトのformで処理するので。

/views/prefectures/ の下に
「add_confirm.ctp」ファイルを作る。

「add.ctp」を以下のように変更する。(Bakeで作られたものを変更)

フォーム項目をelementから呼び出します。上記★の部分。

「add_confirm.ctp」ファイルの内容。
下記のように記載します。

「モデルの変更」

バリデーションでmessage項目を追加しておくと、確認画面でエラー時にメッセージが表示される。

「コントローラーの変更」

Bakeで作った時には function add()でdataが存在する場合はDBに登録する処理になっているが、confirm確認後にDB登録する流れに変更するのでfunction add()の中身は削除する。

function add_confirm()を追加する。
ここではバリデーション関連のやり取りをしています。バリデーションがOKであればDBへの登録ボタンを表示させる(データ登録・戻るの2つのボタンを表示)。バリデーション失敗の場合は戻るボタンのみを表示。

「function add_finish()」の内容
ここでは、Bakeで作られていたaddの内容(DBへデータ登録)を記載するだけです。(ほぼコピペでOK)

※XformHelperの設定などは下記参考元に詳しく記載されています。

[参考元]
とても参考になりました。Xformを使うと確認画面が本当に楽に作れます。感謝!
フォーム入力画面と確認画面で共通で使えるXformHelper

[追記] hiddenデータの持ち回りの例。

「prefecture_add.ctp」(エレメント)

「add.ctp」

※value部分はコントローラーで値をセットして変数を設定する形で使える。

「add_confirm.ctp」




人気記事一覧


関連記事一覧

This entry was posted in element, helper and tagged , , , , , . Bookmark the permalink.

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">