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

コントローラーとビュー (5/6)

作成:2015-08-29 10:10
更新:2015-08-29 10:10

■フォームを作成する

では、実際の利用例を挙げておきましょう。まず、index.ctpを下のように書き直しましょう。
<div>
  <h3>Index Page</h3>
  <p><?= $message ?></p>
  <form method="post" action="/helo/index">
  <input type="text" name="text1">
  <input type="submit">
  </form>
</div>

ここでは、text1という名前の項目をフォームに1つだけ用意しておきました。そしてこれを処理するようにコントローラーを修正します(下のリスト欄参照)。

実際に http://localhost:8765/helo/ にアクセスして、フォームに何か書いて送信してみましょう。画面に「you typed:○○」という形で送信したテキストが表示されます。

ここでは、フォームを表示する処理と、フォームを送信した場合の処理をすべてindexアクションで行っています。これは、こんな感じで使い分けています。
$str = $this->request->data('text1');
if ($str != null){
    ……フォーム送信時の処理……
} else {
    ……通常アクセス時の処理……
}

フォームを送信すると、$this->request->data('text1')で値が取り出せますが、普通にアクセスした時には(フォームは送信されてないので)この値はnullになります。これをifでチェックし、それによって処理を分けている、というわけです。

この他、アクセスの方法がGETPOSTかを調べ、それによって処理を分岐させる方法もあるでしょう。リクエスト方法のチェックは、Requestの「is」というメソッドで調べることができます。これはアクセス時の環境情方法を調べるもので、
$変数 = $this->request->is('post');

このようにすれば、POSTアクセスかどうかがわかります。この値がtrueならばPOSTアクセスしており、falseならばPOSTではない、というわけです。

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

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

●プログラム・リスト●

<?php
namespace App\Controller;

use App\Controller\AppController;

class HeloController extends AppController
{
    public function index()
    {
        $str = $this->request->data('text1');
        if ($str != null){
            $str = $this->request->data['text1'];
            $this->set('message', 'you typed:' . $str);
        } else {
            $this->set('message','please type...');
        }
    }
}

※関連コンテンツ

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