将row_array()传递给Codeigniter视图

时间:2017-04-01 20:01:59

标签: php codeigniter

我有这个控制器代码:

10 $rowArr=$this->m_model->getItemData($itemID);
11 $rowArr=['code'=>'123','desc'=>'456','price'=>'789'];
12 $this->load->view('item_v',$rowArr);

在我的模特中,我有:

$result=$this->db
  ->select('code','desc','price')
  ->where('itemID',$itemID)
  ->get('catalog')
  ->row_array();
return $result; 

当我运行它时,我会在'code','desc'和'price'列中显示预期的123,456,789,因为$ rowArr的第二个定义被发送。但是当我注释第11行时,允许第一个(预期的)定义接管 - 我在视图中得到了所有三个未定义的变量错误。

在我看来,我正在使用:

<div>
   <?php
        echo "<div>";
        echo "code: ".$code."<br>";
        echo "desc: ".$desc."<br>";
        echo "price: ".$price."<br>";
        echo "</div>";
   ?>
</div>

由于它使用文字数组工作正常我知道问题必须在模型中 - 毫无疑问我尝试从db查询对象创建数组。 CI文档似乎很清楚,使用row_array()方法应该将db对象转换为php数组。我已经尝试过我能找到或想到的每一个变化,但没有任何效果。谁能告诉我我犯的是什么错误?提前谢谢。

2 个答案:

答案 0 :(得分:-1)

从评论中可以看出,感谢@DFriend和@shaggy,我发现了问题但不是我确定的问题。要打开上面描述为视图的页面,用户单击此代码中的tsEditButt:

$('.tsEditButt').click(function() {
    var itemID=$(this).closest('.item').attr('id');
    var base_url=$('#hiddenDiv').text(); //'http://localhost/CID17/';
    var url=base_url+'controller_a/index/'+itemID,_blank;
    window.open(url); 

我以某种方式删除了部分内容:

 var url=base_url+'controller_a/index/'+itemID,_blank;

所以它打开了新页面,但itemID丢失了,并且从未传递给模型。正如@DFriend所说,“如果模型返回null,则没有记录where item = $ itemID”。经过两天的偷窥后,我想我会记住这个。

答案 1 :(得分:-2)

控制器代码:

$rowArr = $this->m_model->getItemData($itemID);
$data['code'] = $rowArr->code;
$data['desc'] = $rowArr->desc;
$data['price'] = $rowArr->price;

$this->load->view('item_v', $data);

型号代码:

public function getItemData($itemID) {
  $this->db->select('code','desc','price');
  $this->db->from('catalog');
  $this->db->where('itemID', $itemID);
  $result_array=$this->db->get();
  $result=$result_array->row();
  return $result; 
}