我试图从数据库中获得网站任何页面的滚动新闻,而不必在网站的每个控制器中传递变量。所以我决定使用钩子而不是在每个控制器中传递滚动变量。
我确实创建了一个像这样的类
class Scroll
{
function getScroller()
{
$data = array();
$CI =& get_instance();
$CI->db->where('a_status','active');
$CI->db->limit(4);
$CI->db->order_by('id','desc');
$Q = $CI->db->get('news');
if($Q->num_rows() > 0){
foreach($Q->result_array() as $row){
$data[] = $row;
}
}
$Q->free_result();
return $data;
}
}
我现在得到的是
Severity: Notice
Message: Trying to get property of non-object
Call to a member function get() on a non-object in E:'xampp'htdocs'
谁能告诉我怎么做这个?谢谢,我想在任何控制器的视图中自动获取scrollernews,而无需传入每个控制器。由于 如果您在视图级别定义,则不需要这样做。
可以直接在视图中定义db请求。
另一种方法是有独立的控制器与单独的视图,并通过iframe加载到页面中。它通常用于"网页小部件",可以稍后加载到其他页面。
扩展CI Controller的核心类应该会减少麻烦。http://ellislab.com/codeigniter/user-guide/general/core_classes.html
<我>应用程序/核心/MY_Controller.php 我>
class MY_Controller extends CI_Controller {
public function __construct() {
parent::__construct();
//By do this, all controllers who use this class as parent controller
//will have $news in their views
$this->load->vars(array(
'news' => array()
));
}
}
<我>应用程序/控制器/welcome.php 我>
class Welcome extends MY_Controller {
public function index()
{
$this->load->view('welcome_message');
}
}
应用程序/视图/welcome_message.php
var_dump($news);
使用分隔库或帮助器,并在控制器的结构上调用该方法,如:
class My_Controller extends CI_Controller(){
function __construct(){
parent::__construct();
//load your library
//call your library method
}
}