libro
www.tuyano.com
初心者のためのCakePHP3 プログラミング入門

CRUDの基本について (7/9)

作成: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なら削除する」という処理をさせるために、ただ送信するだけのフォームを用意しておいた、というわけです。

※プログラムリストが表示されない場合

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 プログラミング入門」に戻る