Ошибка при попытке загрузить представление в my_controller - PullRequest
0 голосов
/ 17 января 2011

Рассмотрим мой код:

<?php

class MY_Controller extends Controller {

    public function __construct()
    {
        parent::Controller();
    }

    function _displayPage($page, $data = array()) {
        $this->load->view('structure/header', $data);
        $this->load->view($page, $data);
        $this->load->view('structure/footer', $data);
    }
}
?>

page.php

<?php
    class Page extends MY_Controller {
        function __construct() {
            parent::__construct();  
        }   

        function index() {
            $data['content'] = array('title'=>'hello world');
            $this->_displayPage('home', $data); 
        }
    }
?>

При загрузке моей страницы в браузере я получаю эту ошибку:

A PHP Error was encountered
Severity: Notice
Message: Undefined property: Page::$view
Filename: libraries/MY_Controller.php
Line Number: 11

Кто-нибудь знает, что я делаю не так?Спасибо

Ответы [ 2 ]

0 голосов
/ 17 января 2011

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

Сначала создайте новую папку под вашими представлениями, для этого примера мы назовем ее «включает».Внутри вновь созданной папки включите три файла: header.php, footer.php и template.php.Настройте свой верхний и нижний колонтитулы соответствующим образом, а затем отредактируйте ваш template.php, чтобы он выглядел следующим образом:

<?php echo $this->load->view('includes/univ_header'); ?>

<?php echo $this->load->view($main_content); ?>

<?php echo $this->load->view('includes/univ_footer'); ?>

Теперь из вашего контроллера вы можете определить, какое представление вы хотите установить в качестве «main_content».Например, если у вас есть home.php в папке представлений и вы хотите обернуть его заголовком и нижним колонтитулом, вы должны сделать это в вашем контроллере следующим образом:

function index() {
        $data['content'] = array('title'=>'hello world');
        $data['main_content'] = 'home';
        $this->load->view('includes/template', $data);
    }

Надеюсь, это поможет!

0 голосов
/ 17 января 2011

В вашей библиотеке My_Controller вы должны использовать ключевое слово parent вместо $ this.

ваш код должен выглядеть так:

class MY_Controller extends Controller
{
    public function __construct()
    {
        parent::Controller();
    }

    function _displayPage($page, $data = array())
    {
        parent::load->view('structure/header', $data);
        parent::load->view($page, $data);
        parent::load->view('structure/footer', $data);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...