codeigniter的新手问题

时间:2010-03-18 13:31:30

标签: codeigniter

我正在尝试学习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。

3 个答案:

答案 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