我一直在尝试实施以下引用的解决方案:
Error when trying to load view in my_controller
不知道为什么,但Aptana在我的行上表示语法错误:
parent::load->view('common/header_out');
...当我执行时由解释器借调:“意外的T_OBJECT_OPERATOR”
编辑:以前我尝试过使用:$this->load->view('common/header_out');
...产生了以下错误:
警告:include(application / errors / error_php.php)[function.include]:无法打开流:/home/uom2/www/system/core/Exceptions.php上没有这样的文件或>目录167
警告:include()[function.include]:无法打开'application / errors / error_php.php'以包含>(include_path ='。:/ usr / local / lib / php:/ usr / local / php5 / lib / pear')/home/uom2/www/system/core/Exceptions.php on>第167行
我正在使用CI 2.0。
任何帮助都将不胜感激。
应用/核心/ Uom_Controller.php
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Uom_Controller extends CI_Controller
{
public $data = array(); // Array to store data - passed to views.
protected $view_path = null; // Here to overide the view path if n
public function __construct()
{
parent::__construct();
}
protected function check_session()
{
//Here goes your function
}
protected function render() {
$data['page_title'] = 'Your title';
$data['page_title'] = 'Your title';
parent::load->view('common/header_out');
parent::load->->view('home/home', $data);
parent::load->->view('common/foot');
echo "view rendered: ".date('Y-m-d H:i:s');
}
}
控制器/家庭/ home.php
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Home extends Uom_Controller {
function __construct()
{
parent::__construct();
// Set the view path manually for this method.
$this->view_path = 'home/home.php';
}
function __destruct() {
$this->render();
}
public function index()
{
echo "home updated";
}
public function out()
{
echo "logout";
echo "<br>";
echo $this->view_path;
echo "<br>";
}
}
显然这个意图与本文顶部的SO帖子类似:我想要$ this-&gt; render();被调用并呈现我的页面标题,正文和页脚。
(我的下一个任务是将身份验证检查添加到此MY_Controller模式,因此我希望用于调用视图的解决方案也适用于模型。
谢谢大家,我真的花了好几个小时试图找到解决这个问题的方法再次转向SO。
答案 0 :(得分:0)
我认为您的问题是您正在调用parent :: load-&gt;视图而不是$ this-&gt; load-&gt; view
答案 1 :(得分:0)
唉。这是问题:
function __destruct() {
$this->render();
}
根据Phil Surgeon对here
的评论由于一切都是这样,__ destruct无法按预期工作 继承的。
...在页面下方,更详细的解释似乎有意义:
问题在于控制器是CI superobject,一旦你 破坏这一点,你失去了对CI的所有访问权限。而且你没有 控制破坏过程,所以你不知道什么是静止的 可访问的,不可访问的。
将__destruct()用于清除操作以外的任何操作 破坏当前对象是一个非常糟糕的主意......
简短的回答是,只要你没有从“_destruct”调用扩展类中的方法,事情就会起作用。
希望这有助于其他人。