スポンサードリンク

CakePHP
CakePHP

フォーム画面を作っているのですが、

どうしても処理を分けたい内容が出てきたので

submitを2つ作って処理を分けることにしました。

スポンサードリンク

submitに名前を付ける

PHPでも普通にできるsubmitボタンに名前を付けて

コントローラー側で名前を判断して処理をするという

仕組みを実装します。

ビューファイルでsubmitに名前を付けたものを準備

<?php echo $this->Form->create('Model'); ?>
・・・
略
・・・
<?php echo $this->Form->submit('確認画面へ', array('name' => 'submit')); ?>
<?php echo $this->Form->submit('削除する', array('name' => 'delete')); ?>
<?php echo $this->Form->end(); ?>

上記の様に配列のname属性に値を入れると

submitに名前が付けられます。

コントローラーでどのsubmitが押されたか判断

受け取るコントローラー側

if ($this->request->is('post') || $this->request->is('put')) {
   if(!empty($this->data)){
   // deleteのsubmitボタンを押された時の処理
   // if(isset($this->params['data']['delete'])) { //これでもOK
      if(isset($this->request->data['delete'])) {

         //削除ボタンの場合の処理

      }elseif(isset($this->request->data['submit'])){
         
         //確認画面への場合

      }
   }
}

$this->request->dataでボタンの名前を記して

受け取れば、どのボタンが押されたか判断できます。

後は、そのボタンを押した場合の処理を書いていけばOKです。

(参考)
CakePHP2.0でsubmitを2つ使いたい

スポンサードリンク