我不知道如何做到这一点,因为它不响应我的html。它在firebug中显示div标签,但在它之后没有任何其他内容,应该是索引页(主页)或我的404页。应该发生的是,它应该通过if语句找出应该加载哪个页面视图,然后将该视图加载到内容页中。
控制器:
$siteInfo = $this->kow->getSiteTitleAndSlogan();
$activeTemplate = $this->kow->getTemplate();
if ($this->kow->pageStatus('index', $activeTemplate[0]->short_name) == 1){
$page = $this->load->view($activeTemplate[0]->short_name.'/pages/index');
} else {
$page = $this->load->view($activeTemplate[0]->short_name.'/pages/404');
}
$footerLinks = $this->kow->getFooterNav();
$this->template
->title($siteInfo[0]->site_name,$siteInfo[0]->site_slogan)
->prepend_metadata('<link rel="stylesheet" type="text/css" href="http://www.kansasoutlawwrestling.com/assets/css/'.$activeTemplate[0]->short_name.'.css" />')
->set('footerLinks', $footerLinks)
->set('page', $page)
->set_partial('header', $activeTemplate[0]->short_name.'/header')
->set_partial('navigation', $activeTemplate[0]->short_name.'/navigation')
->set_partial('content', $activeTemplate[0]->short_name.'/content')
->set_partial('footer', $activeTemplate[0]->short_name.'/footer')
->build('kow');
if ($this->kow->pageStatus('index', $activeTemplate[0]->short_name) == 1){
$page = $this->load->view($activeTemplate[0]->short_name.'/pages/index');
} else {
$page = $this->load->view($activeTemplate[0]->short_name.'/pages/404');
}
视图:
<div id="content">
<?php
echo $page;
?>
</div>
编辑:我要做的是将活动模板的id和pageStatus函数的字符串索引获取,并找出页面的状态是否为1。当我像下面这样运行print_r函数时,我得到了这个:
Array ( [0] => Array ( [status_id] => 1 ) )
控制器if ($this->kow->pageStatus('index', $activeTemplate[0]->id) == 1){
$page = $this->load->view($activeTemplate[0]->short_name.'/pages/index', '', true);
} else {
$page = $this->load->view($activeTemplate[0]->short_name.'/pages/404', '', true);
}
print_r($this->kow->pageStatus('index', $activeTemplate[0]->id));
编辑2:我仍然没有看到正确的页面
您正在错误地将索引和404的视图加载到$page
变量中。为了存储$this->load->view()
呼叫的输出,必须将true
作为第三个参数。
来自CI用户指南
将视图作为数据返回
还有第三个可选参数,可以让您更改函数的行为,以便它以字符串形式返回数据,而不是将其发送到浏览器。如果您想以某种方式处理数据,这可能很有用。如果你将参数设置为true (boolean),它将返回数据。默认行为为false,它会将其发送到浏览器。如果您希望返回数据,请记住将它赋值给一个变量:
$string = $this->load->view('myfile', '', true);
同样,代码的最后一位,$page
的第二个定义发生在对->set('page', $page)
和->build('kow');
的调用之后,因此不会改变输出。
我对代码点火器一无所知,但正如我所看到的。我认为$page可能是一个TEMPLATE对象,它不应该自然地使用ECHO显示…
或
你的模板无法渲染,因为php致命错误,但这就是为什么你的缓冲区包含初始DIV,但没有其他。(或者在处理ECHO $PAGE时调用EXIT/DIE)
This "$ This -> know ->pageStatus('index', $activeTemplate[0]->id)"返回一个数组。你做这件事的方式无法与之相比。当然它会返回1,这可以解释为TRUE,但如果status_id被设置为0或2或其他东西,那么它仍然会返回"TRUE"。
希望能有所帮助