我正在尝试学习codeigniter(跟随一本书),但不明白为什么网页空出来。
我的控制器是
class Welcome extends Controller {
function Welcome()
{
parent::Controller();
}
function index()
{
$data['title'] = "Welcome to Claudia's Kids";
$data['navlist'] = $this->MCats->getCategoriesNav();
$data['mainf'] = $this->MProducts->getMainFeature();
$skip = $data['mainf']['id'];
$data['sidef'] = $this->MProducts->getRandomProducts(3, $skip);
$data['main'] = "home";
$this->load->vars($data);
$this->load->view('template');
}
视图是:
<--doctype declaration etc etc.. -->
</head>
<body>
<div id="wrapper">
<div id="header">
<?php $this->load->view('header');?>
</div>
<div id='nav'>
<?php $this->load->view('navigation');?>
</div>
<div id="main">
<?php $this->load->view($main);?>
</div>
<div id="footer">
<?php $this->load->view('footer');?>
</div>
</div>
</body>
</html>
现在我知道模型正在传回正确的变量,但页面显示为完全空白。我希望至少看到一个错误,或基本的html结构,但页面只是空的。此外,即使我按如下方式修改它,控制器也不起作用:
function index()
{
echo "hello.";
}
我做错了什么? 一切正常,直到我对模型进行了一些更改 - 但即使我删除了所有这些新的更改,页面仍然是空白的......我真的很困惑!
感谢, P上。
我已经隔离了给我带来问题的功能。 这是:
function getMainFeature()
{
$data = array();
$this->db->select("id, name, shortdesc, image");
$this->db->where("featured", "true");
$this->db->where("status", "active");
$this->db->orderby("rand()");
$this->db->limit(1);
$Q = $this->db->get("products");
if ($Q->num_rows() > 0)
{
foreach($Q->result_arry() as $row)
{
$data = array(
"id" => $row['id'],
"name" => $row['name'],
"shortdesc" => $row['shortdesc'],
"image" => $row['image']
);
}
}
$Q->free_result();
return $data;
}
我确信某处肯定会出现语法错误 - 但仍然不明白为什么它没有显示任何错误,即使我在索引函数中设置了error_reporting E_ALL。
答案 0 :(得分:2)
第一个停靠点是在命令行上针对您的控制器运行php -l以及您更改然后还原的所有模型。
% php -l somefile.php
其中一个文件中可能存在解析错误,并且您在php.ini中将“显示错误”设置为“关闭”。您应该为开发设置显示错误,为生产设置关闭,如果您还没有。
(编辑:在上面的例子中,你错过了课程的结束}。可能是那样。)
答案 1 :(得分:1)
确保index.php中的error_reporting设置为E_ALL并发布相关模型的代码。
查看完功能后,我怀疑它是由$this->db->orderby("rand()");
引起的
对于有效记录,这应为$this->db->order_by('id', 'random');
请注意,orderby
已弃用,您现在仍可使用它,但新功能名称为order_by
答案 2 :(得分:-1)
不确定,但也可能是因为php的“display_errors”设置为false。 php.ini文件中的You can change it。