用户
 找回密码
 入住 CI 中国社区
搜索
查看: 3669|回复: 2
收起左侧

[模型] 控制器加载辅助函数加载过的模型导致函数连接模型失败

[复制链接]
发表于 2011-12-29 11:37:34 | 显示全部楼层 |阅读模式
为了获取导航信息,我制作了一个连接模型地辅助函数
PHP复制代码
 
function get_nav($info){
      $result = array();
      if(is_array($info)){
          foreach($info as $key=>$value){
              if($value == 'index')
                  $result[] = array('name'=>'首页','url'=> site_url() );
              elseif($value == 'cakes')
                  $result[] = array('name'=>'蛋糕','url'=> site_url('cakes'));
              elseif($value == 'about')
                  $result[] = array('name'=>'关于我们','url'=> site_url('about'));
              elseif($value == 'contact')
                  $result[] = array('name'=>'联系我们','url'=>  site_url('contact'));
              elseif(is_numeric($value)){
                  $CI = &get_instance();
                  if($key == 'category'){
                      $CI->load->model('catogory_model','C_M',TRUE);
                      $result[] = $CI->C_M->get_nav($value);
                  }
                  //问题出现在这里
                  elseif($key == 'product'){
                      $CI->load->model('product_model','P_M',TRUE);
                      $P = $CI->P_M->get_nav($value);
                      $result[] = $P['category'];
                      $result[] = $P['product'];
                  }
                  else ;
              }
              else ;
          }
          return $result;
      }
      else{
          fb('导航函数参数必须是数组',FirePHP::TRACE);
          return ;
      }
         
  }
 
复制代码

而当我地控制器则是这样的
PHP复制代码
 
            //可以成功连接模型并显示数据
            fb(get_nav(array('product'=>1) ) );
            //这里控制器载入了和辅助函数相同的模型
            $this->load->model('product_model','P_M');
            $info = array(
                       'menu_on'=>2,
                'global_adsence'=>$this->AS_M->get_adsence(2),
                      'category'=>$this->C_M->get_all(),
                       'product'=>$this->P_M->product_show($P_id),
                      //注意:这里系统出现报错
                      'nav'=>get_nav(array('product'=>1) )
            );
            $this->load->view('header',$info);
            $this->load->view('cake_info');
            $this->load->view('footer');
 
复制代码

系统报错
A PHP Error was encounteredSeverity: Notice
Message:  Undefined property: Product_modelP_M
Filename: helpers/url_helper.php
Line Number: 651

有个投机取巧的方法是,只需要把get_nav(array('product'=>1)的变量带入到info['nav']数组即可。
问题的情况是:
当get_nav(array('product'=>1) )这个函数一旦在$this->load->model('product_model','P_M');之后出现就无法模型,无论你改变命名(P_M),或者加载CI复本 $CI= get_instance()
不知道哪位大侠可以解答一下
为什么在当控制器载入了与辅助函数已经载入过的辅助函数之后,就会导致辅助函数连接模型失败


发表于 2011-12-29 14:50:02 | 显示全部楼层
本帖最后由 acabin 于 2011-12-29 14:54 编辑

看提示,似乎是url辅助函数出错啊
跟模型关系不大?

 楼主| 发表于 2011-12-29 15:01:34 | 显示全部楼层
我的uri_helper第651行就是
'nav'=>get_nav(array('product'=>1) )

本版积分规则