如何通过帮助程序将我的结果从一个视图打印到codeigniter中的另一个视图

时间:2017-01-04 11:09:14

标签: php codeigniter

我第一次使用自己的助手为购物车网站中的侧边栏过滤器制作了一个简单的帮手功能, 辅助函数被称为helper_helper我的侧边栏实际上是过滤价格和类别我正在向辅助函数发送数据以返回我的结果。现在我得到了结果,但我如何在与view不同的sidebar view中使用它?

  

补充工具栏视图

<?php
$this->load->helper('helper');
if ($this->input->post()) 
{
    $post = $this->input->post();
    $search_result = search_sidebar($post);
    //i get result here
    //if(isset($search_result)) print_r($search_result);
} 
?>
<form method="post" id="filters_form">
  <div class="col-md-3 col-sm-4 col-xs-12 sidebar">
    <div class="sidebar-shop sidebar-left">
        <div class="widget widget-filter">
            <div class="box-filter category-filter">
                <h2 class="widget-title">Categories</h2>
                <?php 
                    echo sidebar_links('categories',$ul=true); 
                ?>
            </div>
            <!-- End Category -->
            <div class="box-filter price-filter">
                <h2 class="widget-title">price</h2>
                <div class="inner-price-filter">
                    <ul>
                        <li><input name="price" class="submit" type="radio" value="< 10" <?php echo set_radio('price' , '< 10')?> /> $ Under-10</li>
                        <li><input name="price" class="submit" type="radio" value="10-20" <?php echo set_radio('price' , '10-20')?> /> $ 10-20</a></li>
                        <li><input name="price" class="submit" type="radio" value="20-40" <?php echo set_radio('price' , '20-40')?> /> $ 20-40</a></li>
                        <li><input name="price" class="submit" type="radio" value="40-50" <?php echo set_radio('price' , '40-50')?> /> $ 40-50</a></li>
                        <li><input name="price" class="submit" type="radio" value="50-80" <?php echo set_radio('price' , '50-80')?> /> $ 50-80</a></li>
                    </ul>

                    <div class="range-filter">
                        <label>$</label>
                        <div id="amount"></div>
                        <button class="btn-filter">Filter</button>
                        <div id="slider-range"></div>
                    </div>
                </div>
            </div>
    <div class="box-filter category-filter">
                <h2 class="widget-title">Brands</h2>
                <?php 
                    echo sidebar_links('brands',$ul=true); 
                ?>
            </div>
            <!-- END Brands -->
        </div>
       </div>
       <!-- End Sidebar Shop -->
     </div>
</form>

//script tag start

$('.submit').click(function() {
 // alert( "Handler for .click() called." );
 $('#filters_form').submit();
});

//script tag close
  

Helper Direcotry中的助手功能

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

function search_sidebar($post='')
{
 if ($post) 
 {
    $ci =& get_instance();

    if (isset($post['categories'])) 
    {
        $category = $post['categories'];
        $ci->db->where('product_category', $category);
    }
    if (isset($post['brands'])) 
    {
        $brand = $post['brands'];
        $ci->db->where('product_brand', $brand);
    }
    if (isset($post['price'])) 
    {
        $price = $post['price'];
        $ci->db->where('product_price', $price);
    }

    $query = $ci->db->get('products')->result();

    if (!empty($query)) 
    {
        return $query;
    }
    else
    {
        return FALSE;
    }
  }
}
  

产品视图

// not getting result in this view
// sidebar view is being called inside it
// print_r($search_result);

我只是在print_r($search_result)Category Page正在加载sidebar视图。不应该只是这样的工作或我错过了什么?
我已阅读文档,但如果我们使用帮助函数,他们只会参考如何创建anchor()? 请提前告诉我在哪里可以看到这个问题。

3 个答案:

答案 0 :(得分:1)

由于声誉限制(50)我无法发表评论,我发布了答案:)

您是否检查了帮助程序中的$ post值..以及返回的结果数组$ query ..

如果它返回值,你可以简单地将它们放在foreach循环中,如下所示打印结果

foreach($search_result as $res){
            echo $res->some_field;
}

检查是否有帮助...或者我会在评论中知道的范围内为您提供帮助

答案 1 :(得分:0)

在辅助函数search_sidebar()中。

如果要以数组格式返回数据:

if (!empty($query)) 
    {
        return $query->result_array();
    }

如果要返回object fromat中的数据:

if (!empty($query)) 
    {
        return $query->object();
    }

然后尝试使用print_r($search_result);,您将获得所需格式的数据。希望它能运作。

答案 2 :(得分:0)

它应放在sidebar view之前,

<?php
$this->load->helper('helper');
if ($this->input->post()) 
{
  $post = $this->input->post();
  $search_result = search_sidebar($post);
  //i get result here
  //if(isset($search_result)) print_r($search_result);
} 
?>

这样我就不会遇到范围问题,在捕获表单后我可以加载视图 $this->load->view('sidebar'); 在获得结果后,我可以在视图的其余部分中执行数据。