Переменная, переданная в контроллер, не работает в представлении.
В моем контроллере у меня есть:
public function index()
{
$login_data['content_view'] = 'login/login';
//echo $login_data['content_view']; die(); //display: login/login
$this->load->module("template");
$this->template->login_template($login_data);
}
И на мой взгляд:
$this->load->view('partial/header');
$this->load->view($content_view); // not working
//$this->load->view('login/login'); // working
$this->load->view('partial/footer');
Я получаю следующее сообщение об ошибке: Сообщение: Неопределенная переменная: content_view
Не могли бы вы показать, что делает метод login_template
?
Это не то, как вы загружаете представления (внутри представления)!
Представления загружаются внутри контроллера, который также поддерживает загрузку нескольких представлений.
Пример: вы загружаете статический заголовок и общие шаблоны, затем вы загружаете свой конкретный контент, а затем, возможно, общий нижний колонтитул, как показано ниже:
<?php
class Page extends CI_Controller {
public function index()
{
$data['page_title'] = 'Your title';
$this->load->view('header');
$this->load->view('menu');
$this->load->view('content', $data);
$this->load->view('footer');
}
}
Так работает архитектура MVC. Кроме того, хорошо написана документация Codeigniter, см.: Просмотры - Codeigniter
вы можете очень хорошо загрузить представление изнутри представления: stackoverflow.com/a/17812513/2275490
Большое спасибо за ваш ответ. Я забыл сказать, что использую модульное расширение HMVC.
Я нашел проблему. Я впервые использую модульное расширение HMVC и забыл добавить переменную $data в контроллер template.php следующим образом:
public function login_template($data=Null)
{
$this->load->view("template/login_template", $data);
}
До того, как я использовал:
public function login_template($data=Null)
{
$this->load->view("template/login_template");
}
Так что еще раз спасибо
попробуй это:
$data = array();
$this->template->login_template($login_data);
$data['content_view'] = 'login/login';
$this->load->view('header', $data);
Большое спасибо! Я забыл добавить переменную $data.
Ваше представление не знает о контроллере! вам нужно прочитать это: codeigniter.com/user_guide/general/…