Я не могу создать экземпляр класса на Codeigniter

Я пытаюсь создать экземпляр класса, но я получаю следующую ошибку:

Обнаружена ошибка PHP

Серьезность: Уведомление

Сообщение: неопределенное свойство: DM_TemplateLoader :: $ load

Имя файла: библиотеки / Form_validation.php

Номер строки: 147

Backtrace:

Файл:
C: \ XAMPP \ HTDOCS \ DataMigrator \ ci_my_app \ контроллерах \ DM_FormValidator.php
Линия: 13 Функция: __construct

Файл: C: \ xampp \ htdocs \ DataMigrator \ index.php Строка: 292 Функция:
require_once

Неустранимая ошибка: вызов функции-члена helper () для необъекта в
C: \ XAMPP \ HTDOCS \ DataMigrator \ ci_my_sys \ библиотеки \ Form_validation.php
на линии 147 Обнаружена ошибка PHP

Серьезность: ошибка

Сообщение: вызов функции-члена helper () для необъекта

Имя файла: библиотеки / Form_validation.php

Номер строки: 147

Backtrace:

Это мой код:

DM_FormValidator.php

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

class DM_FormValidator extends CI_Controller {

public function index()
{
$this->load->library('form_validation');
$this->form_validation->set_rules('sender_host', 'Host (Sender)', 'required');

if ($this->form_validation->run() == FALSE) {
require_once APPPATH . 'controllers/DM_TemplateLoader.php';
$template_loader = new DM_TemplateLoader();
}
}
}

DM_TemplateLoader.php

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

class DM_TemplateLoader extends CI_Controller {

public function view($page = 'home') {

// Loading the URL helper
$this->load->helper('url');

if (file_exists(APPPATH . 'views/pages/' . $page . '.php')) {
$data['page_title'] = 'Data Migrator: Home';

// Building the template
$this->load->view('template/header', $data);
$this->load->view('pages/' . $page);
$this->load->view('template/footer');
}
else {
show_404();
}
}
}

Что я делаю неправильно?

0

Решение

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

Создать библиотеку

В папке вашего приложения / библиотеки создайте Layout.php (или что угодно)

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

class Layout
{
protected $ci;

public function __construct()
{
$this->ci =& get_instance();
}

public function load_template($view)
{
// Loading the URL helper
$this->ci->load->helper('url');

if (file_exists(APPPATH . 'views/pages/' . $page . '.php'))
{
$data['page_title'] = 'Data Migrator: Home';

// Building the template
$this->ci->load->view('template/header', $data);
$this->ci->load->view('pages/' . $page);
$this->ci->load->view('template/footer');
}
else {
show_404();
}
}

}

Загрузите свою библиотеку

После этого в вашем приложении / config / autoload.php

$autoload['libraries'] = array('layout', yourotherstuff);

Используй это

Наконец, в вашем контроллере DM_FormValidator вместо создания экземпляра вашего класса просто вызовите библиотеку:

$view = "mypage";
$this->layout->load_template($data);

Вы также можете переопределить базовую нагрузку-> view () (system / core / Loader.php) своей. Посмотрите на документацию: http://www.codeigniter.com/user_guide/general/core_classes.html

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]