我试图从数据库中获取网站任何页面中的滚动新闻,而不必在网站的每个控制器中传递变量。所以我决定使用钩子而不是在每个控制器中传递scroll变量。
我确实创建了一个这样的类
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而不必传入每个控制器。感谢
答案 0 :(得分:0)
如果您在视图级别定义它,则不需要这样做。
您可以直接在视图中定义数据库请求。
其他方法是将具有单独视图的分离控制器通过iframe加载到页面中。它通常用于“web小部件”,以后可以加载到另一个页面。
答案 1 :(得分:0)
扩展CI控制器的核心类应该可以减轻您的麻烦。 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);
答案 2 :(得分:0)
使用分离的库或帮助程序,并在控制器的构造上调用该方法,如:
class My_Controller extends CI_Controller(){
function __construct(){
parent::__construct();
//load your library
//call your library method
}
}