在$ this-> load->视图,Codeigniter之后终止执行控制器

时间:2018-04-18 00:12:26

标签: php codeigniter

您好我正在使用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($描述);

          }

重定向后执行了特定代码。有人可以帮忙吗?

2 个答案:

答案 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

在这里测试

https://3v4l.org/W5oB5

我认为in_array非常明显,但这里array_column非常有用且经常被忽视。