Представления Codeigniter с динамическими параметрами - PullRequest
1 голос
/ 31 мая 2011

Я загружаю несколько видов из контроллера, чтобы отобразить страницу.

$this->load->view('header');
$this->load->view('content', $data);
$this->load->view('sidebar1', $data1);
$this->load->view('sidebar2', $data2);
$this->load->view('footer');

Однако я думаю, что это не чистый подход. Можно ли это улучшить, создав единый основной вид, например «views / page», который включает в себя все вышеперечисленные виды. Затем вместо вызова всех представленных выше представлений я могу вызвать только основное представление, например:

$this->load->view('main');

В таком случае, как я могу передать переменные для содержимого, sidebar1 и sidebar2? Спасибо

Ответы [ 3 ]

2 голосов
/ 31 мая 2011

Передайте данные для каждого представления в виде массива в ваш основной вид, а затем передайте эти массивы, когда ваш основной вид загрузит подпредставления.

$data['sidebar1_data'] = array($one => 'one');
$data['sidebar2_data'] = array($two => 'two');

Тогда на вашем главном экране:

$this->load->view('sidebar1', $sidebar1_data);
$this->load->view('sidebar2', $sidebar2_data);
0 голосов
/ 01 июня 2011

В рамках моих проектов я имею тенденцию делать:

$this->load->vars($data);
$this->load->view('template_name');

Где мой шаблон загружается в других представлениях внутри себя.

В документации CodeIgniter говорится следующее для метода $ this-> load-> vars ():

"Эта функция принимает ассоциативный массив в качестве входных данных и генерирует переменные, используя функцию извлечения PHP. Эта функция дает тот же результат, что и второй параметр функции $ this-> load-> view (), приведенной выше. Причина, по которой вы Возможно, вы захотите использовать эту функцию независимо, если вы хотите установить некоторые глобальные переменные в конструкторе вашего контроллера и сделать их доступными в любом файле представления, загруженном из любой функции. Вы можете сделать несколько вызовов этой функции. Данные кэшируются и объединены в один массив для преобразования в переменные. "

Использование $ this-> load-> vars ($ data) помогает избежать необходимости загружать данные для каждого представления в моем шаблоне.

0 голосов
/ 31 мая 2011

используйте вот так

     $newData = array_merge($data, $data1, $data2);
     $this->load->view('main', $newData);

Если в $ data, $ data1, $ data2 нет ключа с таким именем, он будет работать без изменения представления для изменения имени переменной.

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