altere5's blog

I thought what I'd do was, I'd pretend I was one of those deaf-mutes. ( or shou'd i ? )

CakePHPのお勉強 5回目 お問い合わせ一覧の表示

さて、ここまで入力に関する処理を色々と試しました。
ただこのままだとどんな問い合わせがあったかさっぱりわかりません。
そこで今回は問い合わせの一覧を表示してみたいと思います。

(1) コントローラへ一覧表示の処理を追加

コントローラに一覧表示の処理として「contactlist」アクションを追加する。

<?php

class ContactsController extends AppController {

    // indexアクション
    public function index() {}

    // thanksアクション
    public function thanks() {

        if($this->request->is('post')) {

            $this->Contact->set($this->request->data);

            if($this->Contact->validates()) {

                $this->Contact->create();
                $this->Contact->save($this->request->data);

                //POSTデータを受け取った場合の処理を記述
                $this->set('username', $this->request->data['username']);

            } else {

                $this->render('reinput');

            }

        } else {

            $this->redirect('index');

        }

    }

    // contactlistアクション
    public function contactlist() {

        $this->set('contacts', $this->Contact->find('all'));

    }

}
 

37行目から42行目に一覧表示用の処理を追加。
ここでは「find」メソッドを使い登録済みの全データを取得しビューから参照可能なようにセット。

(2) 一覧表示用のビューを追加

次に一覧表示で利用するビューを追加する。

<table>
    <tr>
        <th>お名前</th>
        <th>メールアドレス</th>
        <th>お問い合わせ日時</th>
    </tr>

    <?php foreach ($contacts as $contact): ?>
    <tr>
        <td><?php echo $contact['Contact']['username']; ?></td>
        <td><?php echo $contact['Contact']['email']; ?></td>
        <td><?php echo $contact['Contact']['created']; ?></td>
    </tr>
    <?php endforeach; ?>

</table>

コントローラから受け渡されたデータを使いループ処理にて表示を実施。 「$contacts」配列から1件ずつ取り出し、「$contact」に格納。
取り出したデータを使い「お名前」「メールアドレス」「お問い合わせ日時」をそれぞれ表示。

(3) 動きの確認

http://localhost/contacts/contactlist」にアクセスする。

f:id:altere5:20131116205608p:plain

ちゃんと一覧表示される。