Php 代码点火器MVC显示基本视图

Php 代码点火器MVC显示基本视图,php,codeigniter,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

请原谅,这是一个有点新手

我的主视图位于@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>
头文件_meta.php位于(app/views):


标题
名为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 */

尝试将此代码添加到控制器中,可能您错过了此选项

function SpecialPage(){

        parent::CI_Controller();
}
注意: 确保控制器名称与文件名相同

我还有一个问题,兄弟,你怎么叫页面加载


古德鲁克

我想是这一行:

<?php $this->load->view('header_meta.php'); ?>
显然,“$t>l>v()”必须更改为“echo$head”。或者,我更喜欢的方式(使用模板视图):


您的页面应命名为:

  • specialPage.php
    而不是控制器文件夹下的index.php

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

  • 这可以使用
    yourhost.com/index.php/specialPage
    yourhost.com/specialPage
    (如果启用了
    .htaccess
    重写)

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


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

函数
SpecialPage()
应该是
\uu-construct()
parent::CI\u-Controller()
应该是
parent:\uu-construct()



祝你好运

那么控制器名称应该命名为SpecialPage.php,而不是index.php(位于app/controller下)?是;请将所有CI_控制器替换为控制器,也许这是我忘记问的问题:我们是否可以假设使用未修改的CI欢迎页面进行安装?是的,默认的欢迎工作正常。我基本上将welcome.php文件(在app/view下)重命名为index.php,并将其控制器从welcome_page.php重命名为index.php(在app/controller下)您关于在视图中不使用php的评论。。。那么,如何让它显示在/index.php文件中而不使用
。请参阅更新的代码。这仍然不起作用。正如我所说的,使用一个,而不是我编写的第二个代码块。哦,我必须添加:类必须匹配文件名(即“Index”,而不是“SpecialPage”)。我如何在视图中调用这个公共函数Index()方法?视图由控制器调用,而不是相反。如果访问“myhost.com/index.php/index”,CI将调用“index”controller.simplePage.php的“index”方法(按约定)?你从哪里得到simplePage?我现在在第6行得到对未定义方法CI_Controller::CI_Controller()的调用,这是
函数SpecialPage(){parent::CI_Controller();}
<?php $this->load->view('header_meta.php'); ?>
$head = $this->load->view('header_meta', '', true);
$this->load->view('index', array('head' => $head));
$body = $this->load->view('index', '', true);
$this->load->view('template', array('body' => $body));