2012-05-01 90 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),但我不知道如何將變量flag1flag2以及此結果的行ID($results['Product']['id']))添加到新頁面。

有人可以指導我如何執行這個整齊?這種一般方法是否正確?如果不是,我應該採取什麼路線?如果可能的話,我寧願不要在這個時候使用javascript。

編輯:我想我可以使這項工作,如果我使用的URL傳遞數據..但我仍然想知道這可以做「引擎蓋下」或在MVC。我覺得我在攻擊CakePHP平臺。

更新:所以,我結束了使用URL參數檢索信息塊,如flag1flag2。我仍在尋找替代方法。

回答

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

這適用於做什麼,我需要做的。我覺得有一個更合適的方法來做到這一點。

0

要查看您的IS-複選框校驗的數據的位置,做在你的控制器如下:

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

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

如果你想將數據傳遞到從當前頁面的搜索控制器,你可以隨時添加將數據提交到您的表單中:

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