У меня проблема с моим помощником codeigniter.
Это мой контроллер, который вызывает представление:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Login extends CI_Controller {
function __construct() {
parent::__construct();
}
function index() {
$this->load->view('inc/header');
$this->load->view('login_view');
$this->load->view('inc/footer');
}
}
Это отлично работает, но у меня есть более одного контроллера с несколькими функциями, которые могут вызвать представление.
поэтому я думал, что я помогаю:
function view($site) {
$this->load->view('inc/header');
$this->load->view($site);
$this->load->view('inc/footer');
}
Когда я называю этого помощника следующим образом:
view('login_view');
Я получаю эту ошибку:
> Fatal error: Using $this when not in object context in C:\.....\application\helpers\custom_helper.php on line 23
строка 23 =
$this->load->view('inc/header');
Что не так с этим кодом?
При создании помощников вы должны использовать функцию get_instance. Это позволяет вашей функции использовать ресурсы CodeIgniter.
Таким образом, ваша функция будет выглядеть так:
function view($site)
{
$CI =& get_instance();
$CI->load->view('inc/header');
$CI->load->view($site);
$CI->load->view('inc/footer');
}
РЕДАКТИРОВАТЬ:
Вы также должны передать массив этой функции, которая позволит вам загружать данные в представление. Как это;
function view($site, $data = array())
{
$CI =& get_instance();
$CI->load->view('inc/header', $data);
$CI->load->view($site, $data);
$CI->load->view('inc/footer', $data);
}