此表格:
<?php
echo $this->Form->create();
echo $this->Form->select('quantity', [1,2,3,4,5,6,7,8,9], ['value'=> $this->Number->format($cartitem['quantity']) ,
'class'=>'form-control', 'type'=>'number']);
echo $this->Form->end();
?>
在视图中。我想这样做,当用户选择一个新的数量值时,它会调用cartController中的updateQuantity函数。
public function updateQuantity($prod_id)
{
//get query for product and user (need for using composite key)
$query = $this->Cart->find('all')
->where(['users_id =' => $this->Auth->user('id'), 'product_id' => $prod_id])
->contain([])
->limit(1);
$data = $query->toArray();
$data[0]['quantity'] = $this->request->getParam('quantity');
if ($this->Cart->save($this->makeEntityFromArray($data[0]))) {
$this->Flash->info(__('The item has been updated.'));
return $this->redirect(['action' => 'index']);
}
$this->Flash->info(__('item update fail. Please, try again.'));
}
return $this->redirect($this->referer());
我现在可能只是刷新页面进行更新。所以当我选择下拉列表中的另一个项目时,我想调用该方法。怎么样?
答案 0 :(得分:0)
如果您对页面重新加载没问题,只需将表单指向您的操作:
$this->Form->create(null,["url" => ["controller" => "Cart", "action" => "updateQuantity"], "id" => "my-form"]);
如果您想通过POST提交表单,请同时更改这些行:
$data[0]['quantity'] = $this->request->getParam('quantity');
为:
$data[0]['quantity'] = $this->request->getData('quanitity');
或者,如果您想通过GET提交表单,只需在表单中添加另一个选项 - &gt; create():"type" => "get"
您还需要一种提交此表单的方法。由于您希望在输入值更改时提交它,因此您需要使用一些JavaScript。使用jQuery的示例:
$("#my-select").change(function(){
$("#my-form").submit();
});
如果您不想重新加载页面,可以使用例如调用您的操作。 $就()。