Code Igniter MVC显示基本视图

时间:2012-03-10 04:14:12

标签: php codeigniter

对不起,如果这是一个新手。

我的主视图位于@ app / views / index.php:

<?php echo $head ?>

</head>
<body>

<div id="container">
    <h1>Welcome to CodeIgniter!</h1>

    <div id="body">
        <p>The page you are looking at is being generated dynamically by CodeIgniter.</p>

        <p>If you would like to edit this page you'll find it located at:</p>
        <code>application/views/welcome_message.php</code>

        <p>The corresponding controller for this page is found at:</p>
        <code>application/controllers/welcome.php</code>

        <p>If you are exploring CodeIgniter for the very first time, you should start by reading the <a href="user_guide/">User Guide</a>.</p>
    </div>

    <p class="footer">Page rendered in <strong>{elapsed_time}</strong> seconds</p>
</div>

</body>
</html>

header_meta.php文件位于(app / views):

<!DOCTYPE html>
<html>
<head>
    <title>Title</title>
    <link rel="icon" type="image/png" href="img/favicon.ico" />
    <!--meta-->

控制器,名为SpecialPage.php,位于app / controllers /:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class SpecialPage extends CI_Controller {

    function SpecialPage(){
        parent::CI_Controller();
    }

    public function index()
    {
        $head = $this->load->view('header_meta', '', true);
        $this->load->view('index', array('head' => $head));
    }
}

/* End of file welcome.php */
/* Location: ./application/controllers/welcome.php */

错误我正在使用SpecialPage.php控制器: Call to undefined method CI_Controller::CI_Controller() on line 6 这是: function SpecialPage(){ parent::CI_Controller(); }

为什么这仍然只显示404错误?????

4 个答案:

答案 0 :(得分:2)

我想这就是这句话:

<?php $this->load->view('header_meta.php'); ?>

&#34; .php&#34;延伸似乎是罪魁祸首。

顺便说一句,我不建议在你的视图中使用PHP代码(回声和循环除外)。更好的是在你的控制器中编写它:

$head = $this->load->view('header_meta', '', true);
$this->load->view('index', array('head' => $head));

显然,&#34; $ t&gt; l&gt; v()&#34;必须改为&#34; echo $ head&#34;。或者,我喜欢的方式(使用模板视图):

$body = $this->load->view('index', '', true);
$this->load->view('template', array('body' => $body));

答案 1 :(得分:1)

您的网页应命名为:

  • specialPage.php而非控制器文件夹下的index.php。

  • 有关控制器命名约定的更多信息,请阅读here

  • 预计会使用yourhost.com/index.php/specialPageyourhost.com/specialPage(如果您的.htaccess重写已启用)。

  • Codeigniter尝试根据您指定的classname(通过controller/model)打开文件。 Codenigniter不知道为什么它应该为您的类文件加载index.php(除非您将类名指定为Index)。

我个人建议不要将index.php用于您的文件,因为它可能会让您和其他人感到困惑,这将是一个自动加载的文件。然而,在codeigniter中,唯一的自加载文件是codeigniter安装的根文件夹中的index.php。所有其他文件仅通过index.php(以及它进一步包含的文件)加载。

答案 2 :(得分:0)

尝试将此代码添加到控制器中,也许您错过了

function SpecialPage(){

        parent::CI_Controller();
}

注意: 确保您的控制器名称与文件名

相同

我还有另一个问题,你如何调用页面加载?

Gudluck !!

答案 3 :(得分:0)

功能SpecialPage()应为__construct()parent::CI_Controller()应为parent::__construct();.

祝你好运