ysku's blog

ウェブ・無線通信・組み込みとか

複数Formボタンの設置と判別【CakePHP2.5】

f:id:yusuke1581:20141112005253j:plain
CakePHPを使用して1つのビューに複数のFormボタンを設置することがありました
その際のコントローラ側での判別方法です

以下の記事ではCakePHP1.3と2.0での判別方法を紹介しているようですが、CakePHP2.5では仕様が変わっているようでした

CakePHP2.0でsubmitを2つ使いたい - ぶろぐ


1)ビュー側での設定
ビュー側では以下のように、各Fromボタンにlabelとnameを設定する必要があります
今回はlabelにtest、nameにhogeという名前をつけています

<?php
    $options = array(
        'label' => 'test',                         // ボタンに表示される名前
        'class' => 'ボタンのクラス',
        'name' => 'hoge'
    );
    echo $this->From->end($options);
?>

2)コントローラ側での判別
コントローラ側では、postされた際にそのデータが、

$this->request->data

に格納されるのですが、ボタンに与えられた名前もこの中に含まれます
具体的には、

$this->request->data['hoge']

に、testという値が格納されています

これを使用して、コントローラ側で押されたボタンを判別することが可能です

以上が、複数Formボタンの設置と判別方法になります