2017年2月17日
CakePHP Formヘルパーで別のコントローラのアクションへ処理を飛ばす方法
CakePHPは通常現ページのアクションを実行する。
/*****/users/index
を閲覧している場合、UsersController.phpのfunction index()内の処理を行うことになる。
ページ内の処理としては、ViewファイルにFormヘルパーを使いPOSTやGETをするという処理がはしる。
今回の場合は
app/View/Users/index.ctp
を編集することになり、通常Fromヘルパーを使う場合は
<?php echo $this->Form->create('User'); ?>
という記述になる。
これが実際のタグでは
<form action="/*****/users" id="UserIndexForm" method="post" accept-charset="utf-8">
という記述になる。
同一ページ内に別のアクションや別のコントローラの処理を行う場合は、fromタグのactionで処理をさせるコントローラに情報を渡す必要がある。
その場合の記述は
<?php echo $this->Form->create('User' , array( 'url' => array( 'controller' => 'biorthythms', 'action' =>'add') )); ?>
というように、配列でurlを渡してあげる必要がある。
この’url’はCakePHP2.8より前では’action’という記述だったよう。
今は禁止になっているので’action’で記述するとエラーになるので要注意。
コメントを書く