2012-05-01 13 views
0

私は下記のフォームの製品検索ページを持っています。検索結果は同じページに表示され、検索バーが最上部に表示されます。チェックボックスを使用してフラグを私はまた、次の(それがまだ動作しない)ことができ、検索結果に小さな箱を持ってCakePHP:ボタンをクリックしてデータベースを更新できるようにする

echo $this->Form->create('Searches', array('action'=>'products', 'type' => 'get', 'name' => 'textbox1')); 
echo $form->input($varName1, array('label' => false)); 
echo $form->end('Locate'); 

ユーザー製品、従ってを用いて、そのデータベース(テーブルproductsとモデルProductを使用して)更新しますボタンをクリックします。この検索ページのコントローラはSearchesです。

<form method="link" action="/myapp/product/test_update_db> 
<label><input type="checkbox" name="flag1" <?php echo $preCheckBox1; ?>>Flag 1</input></label> 
<label><input type="checkbox" name="flag2" <?php echo $preCheckBox2; ?>>Flag 2</input></label>       
    <input type="submit" value="Update">         
</form> 

このチェックボックスとDB更新ルーチンを実行する方法を理解するのが難しいです。私は私が行きたいリンク(/myapp/product/test_update_db)に取得していますが、私は新しいページにこの結果($results['Product']['id']))の行IDと一緒に、変数flag1flag2を取る方法がわかりません。

これをうまく実行する方法を教えてもらえますか?この一般的なアプローチは正しいですか?そうでない場合は、どのようなルートを取るべきですか?可能であれば、この時点でjavascriptを使用しないことをお勧めします。

編集:私は、データを渡すためのURLを使用する場合、私は、この作品を作ることができると思います..しかし、私はまだ、これは「フードの下」またはMVCで行うことができる方法を知りたいのです。私はCakePHPプラットフォームでハッキングしているような気がします。

更新:flag1flag2などの情報を取得するためのURLパラメータが使用されました。私はまだ別の方法を探しています。

// Cake 2.0+ 
debug($this->request->data); 

// previous versions 
debug($this->data); 

あなたは、現在のページから検索コントローラにデータを渡したい場合は、いつでも追加することができます。あなたのである-チェックボックス、チェックされたデータがどこにあるか、お使いのコントローラで、次の操作を行い確認するには

答えて

0

提出データを取得するためにURLに埋め込まれた情報を使用してしまいました。これは私が行うために必要なものを行うため

public function test_update_db() {  
    // Get variables from URL, if any, and save accordingly  
    $result = $this->Product->updateProduct($this->params['url'], 'url'); 
    if ($result) { 
     $this->Session->setFlash('Successfully updated!', 'default', array('class' => 'success')); 
     $this->redirect($this->referer()); 
    } 
    else { 
     $this->Session->setFlash('Update was unsuccessful!', 'default', array('class' => 'error')); 
     $this->redirect($this->referer()); 
    }  
} 

作品:flag1flag2とフォームが送信され、以下のような何か取り扱い製品のコントローラで

、。私はこれを行うためのより適切な方法があるように感じる。

0

あなたのフォームへのデータ:

$this->input 
    (
     'Product.id', 
     array 
     (
      'type' => 'hidden', 
      'value' => $yourProductId 
     ) 
    ); 
+0

私は、これは私が必要なものであるとは思いません。私はフォームを送信したデータ( 'flag1'と' flag2')を製品検索ページから 'product/test_update_db'に引き継ぐ方法を見つけようとしています。私はすでにコントローラ( '検索 'コントローラ)からビューに必要なすべてのデータを渡しています(チェックボックス形式のsesarch結果ページ)。私はCakePHP 1.3を使用しています。 – musicliftsme

+0

@ user796837:私は誤解していると思います。あなたが今持っているものを明確にするためにあなたの質問を更新すること、それがどのように働くのか、そして何を達成したいのか、質問が書かれている方法は少し不明です。 –

0
if ($result) { 
    $this->Session->setFlash('Successfully updated!', 'default', array('class' => 'success')); 
    $this->redirect($this->referer()); 
} 
関連する問題