Как загрузить виды MVC в основной файл шаблона - PullRequest
8 голосов
/ 10 сентября 2011

Я работаю над своей собственной платформой MVC.Ниже приведен пример контроллера, который у меня есть.

У меня есть способ загрузки моделей в мой контроллер и просмотра файлов.

Я также хочу иметь различные варианты шаблонов для моего сайта.Мой шаблон будет просто макетом страницы, который вставляет представления, созданные из моего контроллера, в середину моего файла шаблона.

/**
 * Example Controller
 */
class User_Controller extends Core_Controller {

    // domain.com/user/id-53463463
    function profile($userId)
    {
        // load a Model
        $this->loadModel('profile');  

        //GET data from a Model
        $profileData = $this->profile_model->getProfile($userId);

        // load view file and pass the Model data into it
        $this->view->load('userProfile', $profileData);
    }

}

Вот основная идея файла шаблона ...

DefaultLayout.php

<!doctype html>
<html lang="en">
<head>
</head>
<body>



Is the controller has data set for the sidebar variable, then we will load the sidebar and the content
<?php if( ! empty($sidebar)) { ?>

<?php print $content; ?>

<?php print $sidebar; ?>


If no sidebar is set, then we will just load the content
<?php } else { ?>

<?php print $content; ?>

<?php } ?>

</body>
</html>

Другой шаблон без заголовка, нижнего колонтитула и прочего может использоваться для вызовов AJAX

EmptyLayout.php

<?php
$content
?>

Я ищу идеи о том, как загрузить основной файл шаблона, а затем включить ипросмотреть файлы в области содержимого моего основного файла макета?

В примере файла макета вы можете видеть, что в области содержимого есть переменная с именем $ content.Я не уверен, как я могу заполнить это содержимым представлений, которое будет вставлено в мой основной шаблон макета.Если у вас есть идеи, пожалуйста, отправьте образец

1 Ответ

12 голосов
/ 10 сентября 2011

Нечто вроде

function loadView ($strViewPath, $arrayOfData)
{
// This makes $arrayOfData['content'] turn into $content
extract($arrayOfData);

// Require the file
ob_start();
require($strViewPath);

// Return the string
$strView = ob_get_contents();
ob_end_clean();
return $strView;
}

Затем используйте с

$sidebarView = loadView('sidebar.php', array('stuff' => 'for', 'sidebar' => 'only');
$mainView = loadView('main.php', array('content' => 'hello',, 'sidebar' => $sidebarView);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...