0

// コードを表示

echo $form->Create('Survey'); 

echo $form->submit( 'prev.arrow.png', array( 'name' => 'task', 'value' => 'next', 'div' => false ) ); 

echo $form->submit( 'next.arrow.png', array( 'name' => 'task', 'value' => 'prev', 'div' => false ) ); 

echo $form->end();

// コントローラ コード

if( isset( $this->params['form']['task'] ) ) {

    if( $this->params['form']['task'] == 'prev' ) {

        $this->Redirect( $prev_page ); 

        exit(); 

    } else if ( $this->params['form']['task'] == 'next' ) {

        $this->Redirect( $next_page ); exit(); 

    }

}

// それは動作しません !!!また、7 つ以上の送信ボタンがあります。データベース内の SAVE ロジック レコードを処理する 1 つの最終ボタン。それ以外のロジックがある場合..また提案しますか?

4

1 に答える 1

0

フォームが同じ名前の 2 つの変数を送信しています。(タスク) どのボタンを押してもかまわない場合は、常にinputsフォーム ラベル (<form></form>) の間に含まれるすべてのものを送信していることになります。そのため、そのうちの 1 つを上書きしています。

クリックされたボタンに応じて、コントローラで 2 つの異なるアクションを呼び出すことをお勧めします。

postLinkこのために、2 つのボタンを持つフォームを作成する代わりに、フォーム ヘルパーのアクションを使用して 2 つのボタンを作成できます。

何かのようなもの:

//calling the `prev` action for the current controller
echo $this->Form->postLink("Prev", array('action'=> 'prev'), array( 'class' => 'button'));

//calling the `next` action for the current controller
echo $this->Form->postLink("Next", array('action'=> 'next'), array( 'class' => 'button'));

そして、コントローラーで:

public function prev(){
   .... //whatever
}

public function next(){
   ... //whatever
}

または、ボタンごとに 1 つずつ、2 つの異なる送信アクションを持つ 2 つのフォームを作成することもできます。しかし、それは同じでしょう。

于 2013-03-04T11:25:30.643 に答える