CRUDの基本について (7/9)
作成:2015-09-19 11:19
更新:2015-09-19 11:19
更新:2015-09-19 11:19
■エンティティの削除(delete)
残るは、エンティティの削除ですね。削除は、基本的には更新(update)と流れが同じです。アクセス時に渡されたID番号を元にエンティティを検索し、それを使ってフォームを作成する。そして送信されたら、そのエンティティを削除する。最後に実行するのが「更新する」と「削除する」と違うだけで、それ以外は同じですね。
では、実際にやってみましょう。まずはテンプレートの作成です。「Template」内の「Persons」フォルダ内に「delete.ctp」というファイルを作成しましょう。そして下のリスト欄のように記述をします。
ここでは、フォームを1つ用意しています。<?= $this->Form->create($person) ?>というように、$personを引数に指定してフォームを生成している点も更新のフォームと同じです。
が、よく見るとちょっと不思議な点があります。フォーム内にあるのは、<?= h($person->id); ?>というようにエンティティの値を出力するためのタグだけで、入力フィールドなどは一切ありません。ただ、Submitボタンが表示されるだけなのです。つまり、何も値を送信しないフォームなのですね。
実は、このフォームは、何かの値を送るためのものではありません。単に、deleteアクションに「POST送信する」というためのものなのです。つまり、コントローラー側のアクションメソッドで、「GETならエンティティを表示し、POSTなら削除する」という処理をさせるために、ただ送信するだけのフォームを用意しておいた、というわけです。
では、実際にやってみましょう。まずはテンプレートの作成です。「Template」内の「Persons」フォルダ内に「delete.ctp」というファイルを作成しましょう。そして下のリスト欄のように記述をします。
ここでは、フォームを1つ用意しています。<?= $this->Form->create($person) ?>というように、$personを引数に指定してフォームを生成している点も更新のフォームと同じです。
が、よく見るとちょっと不思議な点があります。フォーム内にあるのは、<?= h($person->id); ?>というようにエンティティの値を出力するためのタグだけで、入力フィールドなどは一切ありません。ただ、Submitボタンが表示されるだけなのです。つまり、何も値を送信しないフォームなのですね。
実は、このフォームは、何かの値を送るためのものではありません。単に、deleteアクションに「POST送信する」というためのものなのです。つまり、コントローラー側のアクションメソッドで、「GETならエンティティを表示し、POSTなら削除する」という処理をさせるために、ただ送信するだけのフォームを用意しておいた、というわけです。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
<div> <h3>Delete Person</h3> <?= $this->Form->create($person) ?> <fieldset> <p>ID: <?= h($person->id); ?></p> <p>NAME: <?= h($person->name); ?></p> <p>AGE: <?= h($person->age); ?></p> <p>MAIL: <?= h($person->mail); ?></p> </fieldset> <?= $this->Form->button('Submit') ?> <?= $this->Form->end() ?> </div>
※関連コンテンツ
「初心者のためのCakePHP3 プログラミング入門」に戻る