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

フォームヘルパーを利用する (2/5)

作成:2015-09-05 09:17
更新:2015-09-05 09:17

■フォームを作ってみる

では、実際に簡単なフォームを作成してみましょう。下のリスト欄のようにindex.ctpを書き換えて下さい。これで、入力テキストのあるフォームが表示されます。

テンプレートが作成できたら、後はコントローラー側のアクションを調整するだけです。とりあえず、送信された値を表示するだけの処理をHeloController側のindexに用意しておきましょう。こんな感じですね。
public function index()
{
  $str = $this->request->data('text1');
  $msg = 'typed: ' . $str;
  if ($str == null)
    { $msg = "please type..."; }
  $this->set('message', $msg);
}

これで実行してフォームの動作を確認してみましょう。フォームに入力した値が、フォーム送信後もちゃんと入力フォームに残っていることがわかるでしょう。フォームヘルパーを使うと、そうした機能が自動的に組み込まれた形でフォームが用意されるのです。

■入力用タグの生成

ここでは、<form>タグの他に、入力フィールドと送信ボタンのタグを生成するメソッドが使われています。簡単にまとめておきましょう。
<?=$this->Form->text('text1') ?>

これは、<input type="text">タグを生成するものです。引数に名前を指定すると、それがname属性に設定されます。
<?=$this->Form->submit('OK') ?>

これは<input type="submit">タグを生成するものです。引数に指定した値は、そのまま送信ボタンに表示されるようになります。

どちらも第1引数だけを使っていますが、第2引数に、オプション設定を用意することもできます。これは、タグの属性とその値を連想配列にまとめたものです。例えば、入力フィールドに初期値のテキストを設定したいなら、第2引数にこんな値を指定すればいいでしょう。
['value'=>'please input...']

ただし、標準のレイアウトを使うと、属性などを指定しても表示スタイルは変更されない場合がありますので注意しましょう。

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

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

●プログラム・リスト●

<div>
    <h3>Index Page</h3>
    <p><?= $message ?></p>
    <?=$this->Form->create(null,[
        'type' => 'post',
        'url' => ['controller' => 'Helo', 'action' => 'index']]
    ) ?>
    <?=$this->Form->text('text1') ?>
    <?=$this->Form->submit('OK') ?>
    <?=$this->Form->end() ?>
    </form>
</div>

※関連コンテンツ

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