@whiteleaf

Как правильно сделать вывод контента в mvc?

Здравствуйте,

Я сейчас разбираюсь с работой и архитектурой mvc структуры и пока никак не выходит сделать вывод контента сайта внутри основной разметки.

Объясните, пожалуйста, как это реализовывается на практики.

Вот мои попытки.

namespace vendor\app;


class Controller {

    public $actionDefault = 'Index';
    public $layoutDefault = 'main';
    protected $view;
    protected $router;
    protected $controller;
    protected $action;

    public function __construct()
    {
        $this->view = new View();
    }

    protected function render($view,$params = [])
    {
        $content = $this->getContent($params);
        require_once $this->getLayout();
    }

    protected function getLayout(){
        return ROOT.'/views/layouts/main.php';
    }

    protected function getContent($params){
        return ROOT.'/views/site/index.php';

    }
}
  • Вопрос задан
  • 261 просмотр
Решения вопроса 1
delphinpro
@delphinpro Куратор тега PHP
frontend developer
самое простое:
protected function render($view,$params = [])
    {
        ob_start();
        // внутри main.php будет доступна переменная $params
        // и переменная $this - указатель на текущий объект
        include ROOT.'/views/layouts/main.php';
        return ob_get_clean();
    }

а внутри main.php на месте вывода контента писать

<?= $this->getContents() ?>

Ну это примитивный такой шаблонизатор.
Лучше воспользоваться каким-нибудь готовым шаблонизатором. Я бы порекомендовал twig, но тут вам выбирать, как говорится, на вкус и цвет все фломастеры разные :)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы