您好我正在使用codeigniter for site,我通过我的php页面中的表单调用控制器中的函数函数调用是:
Gear.php:
foreach ($gearArray as $key => $value) {
echo '<tr><td><img id="leftimg" src="'.base_url().''.$value["Product_Image_URL"].'"></td>';
echo '<td>'.$value["Description"].'';
echo '<form method="post" id="addtocart" action="'.site_url('GearController/addorUpdate').'">';
echo '<input type="hidden" name="desc1" value="'.$value["Name"].'">';
echo '<input type="hidden" name="cost1" value="'.$value["Price"].'">';
echo '<input type="submit" value="Add To Cart">';
echo '</form></td>';
}
echo '</table>';
?>
通过
调用GearController内部的方法行动=&#34;&#39; .site_url(&#39; GearController / addorUpdate&#39;)&#39;&#34;
在添加到购物车功能的功能内部,我正在检查商品是否已经在购物车中,然后更新它,一旦更新我试图使用以下方式重定向到页面:
GearController.php:
public function addorUpdate(){
$this->load->helper('form');
$this->load->library('form_validation');
$this->load->model('CartModel','cart');
$boolean = FALSE;
$Description = $this->input->post('desc1');
$data['cartArray'] = $this->cart->return_cart();
foreach ($data['cartArray'] as $value) {
if($Description==$value['Description']){
$boolean = TRUE;
}
}
if($boolean==TRUE){
$this->updateCart($Description);
}
}
public function updateCart($Description){
$updatearray = array(
'Quantity'=>'Quantity+1',
'Price' => 'Price * Quantity',
);
$this->load->model('CartModel','cart');
$update_order = $this->cart->update_cart($updatearray,$Description);
$data['cartArray'] = $this->cart->return_cart();
$this->load->helper('url');
$this->load->view('cart',$data);
}
这里的问题是一切正常,页面被重定向但在几秒钟内它显示一个空白屏幕。我试过返回,死亡并退出。没有任何帮助。似乎控制器正在$ this-&gt; load-&gt;视图下执行代码。我告诉这个是因为我以前在
下有一个功能如果($布尔== TRUE){ $这 - &GT; updateCart($描述);
}
重定向后执行了特定代码。有人可以帮忙吗?
答案 0 :(得分:1)
这听起来像你可能在视图文件的开头有一个BOM
字符。这个角色通常是看不见的。确保开头没有(显然)黑色字符。
您还可以通过暂时将此代码作为函数的第一行updateCart($Description)
来测试echo "This is updateCart;
正在运行。然后注释掉该函数中的所有其他代码。如果您在屏幕上看到该文本,则表示该功能已运行。
答案 1 :(得分:1)
这不能回答你的问题,但它让我烦恼......
而不是这个烂摊子
foreach ($data['cartArray'] as $value) {
if($Description==$value['Description']){
$boolean = TRUE;
}
}
if($boolean==TRUE){
$this->updateCart($Description);
}
你可以这么做
if(in_array( $Description, array_column($data['cartArray'],'Description'))){
$this->updateCart($Description);
}
您可以使用此代码(模型)
进行测试$Description = 'foo';
$data = ['cartArray' => [
['Description' => 'foo'],
['Description' => 'bar'],
]
];
if(in_array( $Description, array_column($data['cartArray'],'Description'))){
echo "found";
}
输出
found
在这里测试
我认为in_array
非常明显,但这里array_column非常有用且经常被忽视。