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

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

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

■日時のためのフォーム生成

この他にも、CakePHPにはフォーム関連のメソッドが用意されています。中でも非常に役立つのが、日時に関するものです。

日時の入力は、けっこう面倒なものです。新しいHTML5対応のブラウザなどでは専用のタグが使えますが、そうでない場合は年月日や時分の選択メニューなどを用意して入力させたりします。これをいちいち作らないといけないのはかなり大変ですね。

フォームヘルパーにある日時関係のメソッドは、これらの項目を入力するためのポップアップメニューを自動生成してくれます。用意されているメソッドを簡単にまとめましょう。

・年月日のポップアップメニューを生成する
<?=$this->Form->date( 名前 , 年月日の設定 ) ?>
年月日を入力するメニューを自動生成します。第2引数には、年月日それぞれのポップアップメニューの設定を連想配列にまとめたものを用意します。これは以下のような形で書きます。
[ 'year'=> 年の設定 , 'month'=> 月の設定 , 'day'=> 日の設定 ]

・時分のポップアップメニューを生成する
<?=$this->Form->time( 名前 , 時分の設定 ) ?>
時分を入力するメニューを自動生成します。第2引数には、それぞれのポップアップメニューの設定を連想配列にまとめたものを以下のように用意します。
['interval'=> 間隔 ,  'hour'=> 時の設定 , 'minute'=> 分の設定 ]
intervalは、分のポップアップメニューに表示する項目の間隔を指定するものです。これがないと、0~59までの数字が表示されるメニューが作成されます。が、'interval'=>10とすれば、0, 10, 20, 30, 40, 50というように、10分ごとの値だけがメニューに表示されるようになります。

・年月日時分の各項目を生成する
<?=$this->Form->year( 名前 , 年の設定 ) ?>
<?=$this->Form->month( 名前 , 月の設定 ) ?>
<?=$this->Form->day( 名前 , 日の設定 ) ?>
<?=$this->Form->hour( 名前 , 時の設定 ) ?>
<?=$this->Form->minute( 名前 , 分の設定 ) ?>
これらも、第2引数の設定は、生成されるタグの属性に指定する値などを連想配列としてまとめたものを用意します。中でも覚えておきたいのは、yearメソッドに用意できる以下の値でしょう。
'minYear' => 最初の年
'maxYear' => 最後の年
これらを指定することで、minYearからmaxYearまでの年の値をポップアップメニューに表示できます。

下のリスト欄に、実際の利用例を挙げておきました。これは年月日と時分の入力メニューを生成し表示するサンプルです。日時関係の入力は、結構使う機会が多いものです。これらのメソッドを利用することで、簡単に入力メニューが作れるのですから、覚えておいて損はありません。

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

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

●プログラム・リスト●

<div>
    <h3>Index Page</h3>
    <p><?= $message ?></p>
    <?=$this->Form->create(null,[
        'type' => 'post',
        'url' => ['controller' => 'Helo', 'action' => 'index']]
    ) ?>
    <?=$this->Form->date('date',[
        'year'=>['style'=>'width:100px;'],
        'month'=>['style'=>'width:100px;'],
        'day'=>['style'=>'width:100px;']
    ]) ?>
    <hr>
    <?=$this->Form->time('time',[
        'interval'=>5,
        'hour'=>['style'=>'width:100px;']
    ]) ?>
    <?=$this->Form->submit('OK') ?>
    <?=$this->Form->end() ?>
    </form>
</div>

※関連コンテンツ

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