我有一个产品搜索页面,其中包含以下表格。搜索结果显示在同一页面上,搜索栏位于顶部。
echo $this->Form->create('Searches', array('action'=>'products', 'type' => 'get', 'name' => 'textbox1'));
echo $form->input($varName1, array('label' => false));
echo $form->end('Locate');
我的搜索结果旁边还有一个小框,允许(它还没有工作)用户使用复选框标记产品并相应地更新其数据库(表products
并使用模型{{1单击按钮即可。请注意,我有一个Product
控制器用于此搜索页面。
Searches
我很难用这种方法搞清楚如何执行这个check-box-and-DB-update例程。我正在访问我想去的链接(<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>
),但我不知道如何获取变量/myapp/product/test_update_db
和flag1
以及此结果的行ID (flag2
)到新页面。
有人可以指导我如何整齐地执行此操作吗?这种一般方法是否正确?如果没有,我应该走哪条路?如果可能的话,我不想在这个时候使用javascript。
编辑:如果我使用URL传递数据,我想我可以做到这一点。但我仍然想知道如何在“引擎盖下”或MVC中完成。我觉得我是在攻击CakePHP平台。更新:所以,我最终使用网址参数来检索$results['Product']['id'])
和flag1
等信息。我还在寻找另一种方法。
答案 0 :(得分:0)
要查看复选框检查数据的位置,请在控制器中执行以下操作:
// Cake 2.0+
debug($this->request->data);
// previous versions
debug($this->data);
如果您想从当前页面将数据传递到搜索控制器,您始终可以将数据添加到表单中:
$this->input
(
'Product.id',
array
(
'type' => 'hidden',
'value' => $yourProductId
)
);
答案 1 :(得分:0)
我最终使用URL中嵌入的信息来获取提交数据。像下面的东西..
在产品控制器中,提交包含flag1
和flag2
的表单时:
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());
}
}
这适用于我需要做的事情。我觉得有一种更合适的方法可以做到这一点。
答案 2 :(得分:0)
if ($result) {
$this->Session->setFlash('Successfully updated!', 'default', array('class' => 'success'));
$this->redirect($this->referer());
}