Загрузка вида из корня Codeigniter

Этот вопрос связан с этим вопросом
Загрузка представления вне папки просмотра с CodeIgniter

Но проблема это очень старая, и никто больше не смотрит это 🙁

Это проблема, у меня есть, я создал функцию на основе ответа @ SpYk3HH, как это

MY_Loader.php

<?php
class MY_Loader extends CI_Loader {
public function base_view($view, $vars = array(), $get = FALSE) {
//  ensures leading /
if ($view[0] != '/') $view = '/' . $view;
//  ensures extension
$view .= ((strpos($view, ".", strlen($view)-5) === FALSE) ? '.php' : '');
//  replaces \'s with /'s
$view = str_replace('\\', '/', $view);

if (!is_file($view)) if (is_file($_SERVER['DOCUMENT_ROOT'].$view)) $view = ($_SERVER['DOCUMENT_ROOT'].$view);

if (is_file($view)) {
if (!empty($vars)) extract($vars);
ob_start();
include($view);
$return = ob_get_clean();
if (!$get) echo($return);
return $return;
}

return show_404($view);
}
}

В контроллере я использовал это так

Welcome.php

class Welcome extends CI_Controller {

function __construct()
{
parent::__construct();
// Load globals
}

/**
* Index Page for this controller
*/
public function index()
{
$data['lang'] = '1';
$data['body_render']='mypages/home.php';
$this->load->view("/layouts/view_layout", $data);
}

view_layout.php

    <?php $this->load->base_view($body_render); ?>

home.php

<?php echo $lang; ?>

Но я получил ошибку, как будто я не могу передать $ lang этому частичному внутри частичного?

Сообщение: неопределенная переменная: lang

Я изменил все свои контроллеры и представления на очень простые, которые кто-то может понять.

0

Решение

Насколько я вижу в ваших кодах, вы не передавали переменную в MY_Loader :: base_view (), когда вызываете ее

в вашем view_layout.php вам нужно передать нужные вам переменные

например:

<?php $this->load->base_view($body_render, ['lang'=> $lang]); ?>
2

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

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

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