0

以下のフォームの製品検索ページがあります。検索結果は同じページに表示され、上部に検索バーが表示されます。

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の更新ルーチンを実行する方法を理解するのにこのアプローチで問題があります。行きたいリンク( )にたどり着きましたが、変数と、この結果の行ID()を新しいページに移動/myapp/product/test_update_dbする方法がわかりません。flag1flag2$results['Product']['id'])

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

編集:データを渡すためにURLを使用すれば、これを機能させることができると思います。しかし、これを「内部」またはMVCでどのように実行できるかを知りたいです。CakePHPプラットフォームをハッキングしているような気がします。

更新:それで、flag1やのような情報を取得するためにURLパラメーターを使用することになりflag2ました。私はまだ別の方法を探しています。

4

3 に答える 3

0

is-checkbox-checkedデータがどこにあるかを確認するには、コントローラーで次の手順を実行します。

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

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

現在のページから検索コントローラーにデータを渡したい場合は、いつでもデータをフォームに追加できます。

$this->input
    (
        'Product.id',
        array
        (
            'type' => 'hidden',
            'value' => $yourProductId
        )
    );
于 2012-05-02T09:44:57.840 に答える
0

提出データを取得するために、URLに埋め込まれた情報を使用することになりました。以下のようなもの。

製品コントローラーで、フォームflag1flag2が送信された場合:

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());
    }       
}

これは私がする必要があることをするために働きます。しかし、これを行うにはもっと適切な方法があるように感じます。

于 2012-05-03T15:35:22.190 に答える
0
if ($result) {
    $this->Session->setFlash('Successfully updated!', 'default', array('class' => 'success'));
    $this->redirect($this->referer());
}
于 2016-01-06T12:28:53.833 に答える