【问题标题】:Pass model data to sub-view from view [duplicate]将模型数据从视图传递到子视图[重复]
【发布时间】:2012-11-13 05:36:13
【问题描述】:

可能重复:
Call to a member function on a non-object

在我的主页视图中,我试图将数据传递给我的标题子视图

<?php
  $this->load->model('header2');
  $head = $this->header2->HeaderData();
  $this->load->view('head_view', $head);
?>    

但我收到此错误:

消息:未定义的属性:CI_Loader::$header2
致命错误:在第 6 行的 H:\Forum\application\views\homepage_view.php 中的非对象上调用成员函数 HeaderData()

【问题讨论】:

  • 您的header2 模型似乎无法正常工作。给出var_dump($this-&gt;header2);的结果。
  • @Repox - var_dump 返回“NULL”,HeaderData 方法在控制器上工作正常
  • 我错过了您尝试在视图中使用加载模型的部分。你不能。下面的答案是正确的做法。
  • @hakre - 如何在视图中加载模型以将其数据传递给子视图?
  • @SteB:var_dump($this-&gt;header2) 是什么?它看起来不像是一个对象,也没有HeaderData() 方法。您确定 codeigniter 框架中的视图模板允许您加载模型吗?我对 CI 不太熟悉,所以只是问一下,因为如果 CI 不支持在视图中加载模型,那么您在问题中提出的代码示例将没有多大意义。

标签: codeigniter fatal-error php


【解决方案1】:

在控制器方法中编写您的代码并仅在那里加载您的视图表单,并使用这样的代码

 $this->load->model('header2');
 $data['head'] = $this->header2->HeaderData();
 $this->load->view('head_view', $head);

并在 head_view.php 视图中以 $head 的形式访问此属性

echo '<pre>';
print_r($head);
echo '</pre>';

如果你在加载主视图,然后在里面调用子视图,那么你在加载视图时不需要传递值,你可以直接访问子视图中的值,所以你可以在subivew中直接使用$head

【讨论】:

  • 所以如果我传递给主页视图的任何数据将在子视图中可用,我只需将数据从 2 个模型传递到主页视图?
  • 是的,您只需将数据传递给 key=>value 对中的主视图,您的键在主视图中将是可变的,就像您可以使用 $key 一样,如果您从主视图加载子视图视图你不传递数据/键=>值对 subivew $key 将在子视图中可用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多