Я создаю свою собственную структуру MVC и столкнулся с проблемой при отправке переменных в представления. loadView()
выглядит следующим образом:Невозможно использовать переменную в виде
function loadView($view, $variables = array())
{
$file_path = APPLICATION_PATH . 'views/' . $view;
if (file_exists($file_path))
{
if (is_readable($file_path))
{
if (! empty($variables)) extract($variables);
include($file_path);
}
else
{
throw new Exception('Could not read view from ' . $file_path);
}
}
else
{
throw new Exception('Could not load view from ' . $file_path);
}
}
Он работает так же, как и ожидалось. Тем не менее, когда я устанавливаю вверх вид шаблона, как этого все становится странно:
loadView('layout/header.php');
loadView($view);
loadView('layout/footer.php');
Это называется, как это ($user
является объект):
$data['view'] = 'login/showUser.php';
$data['user'] = $user;
loadView('layout/template.php', $data);
Переменная $view
получает набор в шаблоне файл и загружает правильный вид. Однако, переменная $user
не может путешествовать в динамически загружаемом зрение, которая содержит только этот код:
<p>User ID: <?php echo $user->id; ?></p>
я могу это сделать в CodeIgniter и я нахожу это немного странно, так как, когда переменные $view
и $user
извлекается в первый loadView()
вызов шаблона, они должны быть доступны для следующего представления, которое просто входит в область.
Что я пропустил?
Не могли бы вы также ввести код класса пользователя? – josmith
Если вы начинаете с предпосылки «сделать что-то вроде CI», то вы уже делаете это неправильно. –
Никогда не говорил, что сделал, что было бы бессмысленно. – Seralize