Code Igniter MVC Отображение основного вида - PullRequest
1 голос
/ 10 марта 2012

Извините, если это немного новичок.

Основной вид у меня находится в @ 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 ]

2 голосов
/ 10 марта 2012

Полагаю, это такая строка:

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

Расширение .php кажется виновником.

Кстати, я не рекомендую использовать PHP-код в ваших представлениях (кроме эхо и циклов). Намного лучше составить это в вашем контроллере:

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

Очевидно, что $ t> l> v () необходимо изменить на «echo $ head». Или, как я предпочитаю (используя вид шаблона):

$body = $this->load->view('index', '', true);
$this->load->view('template', array('body' => $body));
1 голос
/ 10 марта 2012

Ваша страница должна быть названа как:

  • specialPage.php вместо index.php в папке вашего контроллера.

  • Прочитайте здесь , чтобы узнать больше об соглашениях по именованию контроллеров.

  • Предполагается, что он будет использоваться как yourhost.com/index.php/specialPage или yourhost.com/specialPage (если включено перезапись .htaccess).

  • Codeigniter пытается открыть файл в зависимости от того, что classname (через controller/model) вы укажете. Codenigniter не знает, почему он должен загружать index.php для ваших файлов классов (если вы не указали имя класса как Index).

И я лично рекомендую не использовать index.php для ваших файлов, так как это может запутать вас и других, что это будет самозагружающийся файл. Принимая во внимание, что в codeigniter единственным самозагружающимся файлом является index.php в корневой папке вашей установки codeigniter. И все остальные файлы загружаются только через index.php (и файлы, которые в него включены).

0 голосов
/ 14 марта 2012

Функция SpecialPage() должна быть __construct(), а parent::CI_Controller() должна быть parent::__construct();.

Удачи

0 голосов
/ 10 марта 2012

Попробуйте добавить этот код в свой контроллер, может быть, вы пропустите это

function SpecialPage(){

        parent::CI_Controller();
}

Примечание: Убедитесь, что имя вашего контроллера совпадает с именем файла

И у меня есть еще один вопрос, братан, Как вы вызываете страницу для загрузки?

Gudluck !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...