CodeIgniter v2.1.2
我有一个非常简单的CodeIgniter购物车页面设置,按照CodeIgniter文档。
然而,这个购物车页面显示了购物车中的许多产品,用于编辑每个产品数量的input元素都分配了如下name属性:1[qty]、2[qty]、3[qty]、4[qty]、5[qty]等等。
<input name="1[qty]" type="text" ...
<input name="2[qty]" type="text" ...
<input name="3[qty]" type="text" ...
<input name="4[qty]" type="text" ...
<input name="5[qty]" type="text" ...
.... 根据CodeIgniter文档,这是一种方案,而且它似乎工作得很好,因为POST数组自动以正确的格式来轻松地更新购物车。
$this->cart->update( $this->input->post() );cart->update()似乎会忽略任何无效的输入。换句话说,购物车只在数量是数值时才更新。但是,我认为我需要将CodeIgniter表单验证应用到购物车页面。也许我不需要它,我也对你的想法感兴趣。
在我的Controller中,我通常使用set_rules按字段名设置规则,当我有一个未知的字段数时,我不知道字段name参数中会出现什么。
文档显示我可以声明数组上的验证。,但我无法让下面的代码为我工作。我试过[qty],[][qty]和其他几个。如果不工作,我的意思是当购物车页面上的数量字段包含无效数据时,它们不会出现验证错误,并且它总是通过验证并命中update()函数。
$this->load->library('form_validation');
$this->form_validation->set_rules('[][qty]', 'Quantity', 'numeric|strip_tags|xss_clean');
if ($this->form_validation->run() === TRUE) // passed validation -> submission
{
// update the cart
$this->cart->update( $this->input->post() );
....
}
else
{
// display validation errors
....
}cart->update()函数时,无效数据似乎被自动删除。发布于 2015-01-29 00:24:41
由于我不知道如何在数组上声明验证,所以我使用for循环根据购物车中根据count($this->cart->contents())值的唯一行项的数量在每个"QTY“字段上声明规则。(与$this->cart->total_items()不同,计算所有内容,包括单行项的倍数。)
在控制器..。
$this->load->library('form_validation');
for ($i = 1; $i <= count($this->cart->contents()); $i++)
{
$this->form_validation->set_rules($i . '[qty]', 'Item #' . $i . ' quantity', 'numeric|strip_tags|xss_clean');
}在这种情况下,我仍然无法确认是否需要表单验证。通常,需要服务器端验证来保护数据库免受不良数据的影响或安全性。在这种情况下,cart->update()函数似乎自动拒绝无效条目。
https://stackoverflow.com/questions/28181619
复制相似问题