CakePHP3でフォームを作成するときに、「公開する」と「下書き保存」のような複数のボタンを設置して、処理を分けたい場合があります。
色々やり方はありますが、こんな感じでやってます。
= $this->Form->button('公開する', ['type' => 'submit', 'name'=>'mode', 'value'=>'publish', 'class' =>'btn btn-primary' ]); ?>
= $this->Form->button('下書き保存', ['type' => 'submit', 'name'=>'mode', 'value'=>'draft', 'class' =>'btn btn-info' ]); ?>
「name」オプションに2つとも同一の「mode」という名前を指定しておき、受け渡す値は「value」にセットします。
受け渡し先のコントローラで確認します。
debug($this->request->data['mode']);
例えば、「公開する」ボタンを押下した場合、以下のように表示されます。
\src\Controller\MyApplicationController.php
'publish'
これで「publish」か「draft」かで処理が分けられます。