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

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

作成:2015-09-19 11:02
更新:2015-09-19 11:02

■レコード作成(Read)のテンプレートを作る

CakePHPからデータベースを操作するには、モデルとして用意されている2つのクラスを利用します。前回登場した「エンティティ」と「テーブル」ですね。前回、「Persons」というモデルを作成しました。これを使って、データベースアクセスの基本を説明していくことにしましょう。

データベースアクセスの基本は、「CRUD」です。「Create(新規作成)」「Read(データの取得)」「Update(データの更新)」「Delete(削除)」のことですね。この4つの処理がわかれば、データベースの基本的なアクセスは行えるようになります。

まずは「Create(新規作成)」からやってみましょう。データベースのテーブルに新しくデータを登録する処理ですね。これは通常、送信フォームとコントローラー側の処理の組み合わせとして用意するでしょう。

まずは、テンプレート側から作成をしましょう。前回使った「Persons」というモデルを引き続き利用します。アプリケーション名も同じ「Persons」となるでしょう。では、プロジェクトの「src」フォルダ内にある「Template」フォルダを開き、この中に「Persons」という名前のフォルダを作成して下さい。そして、このフォルダの中に「add.ctp」というファイル名でファイルを作り、下のリスト欄のようにソースコードを記述しておきましょう。

ここでは、先に説明した「フォームヘルパー」という機能を利用してフォームを用意しています。フォーム生成部分だけをまとめるとこのようになっているのがわかるでしょう。

・フォームの開始タグ
 <?= $this->Form->create() ?>

・フォーム内の入力フィールドタグ
<?php
    echo $this->Form->input('name');
    echo $this->Form->input('age');
    echo $this->Form->input('mail');
?>

・送信タグ
<?= $this->Form->button('Submit') ?>

・フォーム閉じタグ
<?= $this->Form->end() ?>


送信するフォームの内容は、'name', 'age', 'mail'という3つの入力フィールドの形で用意してあります。これは、personsテーブルに用意してあったフィールド名そのままですね。プライマリキーであるidはありません。プライマリキーは自動生成されるように設定してありますから用意する必要がありません。

送信先の指定もない、ということは、このフォームのアドレスにそのままPOST送信することになります。つまり、/addの処理を行うaddメソッドにGET時とPOST時の処理を用意すればいいわけです。

・<fieldset>タグについて
フォーム関係の前後には、<fieldset>というタグがあります。これはフィールド関係をまとめるためのものです。このタグ内にフォームのタグを出力すると、前後に仕切りを表示し、左右に余白などを作ってフォーム全体を一つにまとめます。まぁ、なくても動作に影響はないのですが、つけたほうが見た目にもよいでしょう。

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

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

<div>
    <h3>Add Person</h3>
    <?= $this->Form->create() ?>
    <fieldset>
    <?php
        echo $this->Form->input('name');
        echo $this->Form->input('age');
        echo $this->Form->input('mail');
    ?>
    </fieldset>
    <?= $this->Form->button('Submit') ?>
    <?= $this->Form->end() ?>
</div>

※関連コンテンツ

「初心者のためのCakePHP3 プログラミング入門」に戻る