Site

Helper view()

v4

view() inclui um arquivo .mucrm.php e devolve HTML. O ponto no nome vira pasta. Não coloca layout — isso é papel do handler.

view(string $path, array $data = []): string
ℹ️Duas formas

Página completa: no handler, $this->view() + propriedade $layout.
Pedaço de tela: <?= view('_components.web.title') ?> dentro de outra view.


Página no handler

class home_handler extends handler
{
    protected string $layout = '_layouts.app';

    public function index()
    {
        return $this->view('home', [
            'posts' => $posts,
        ])->title('Início');
    }
}

Resultado: themes/default/_layouts/app.mucrm.php envolvendothemes/default/home.mucrm.php.


Admin

protected string $layout = 'panels.admin._layouts.app';

return $this->view('panels.admin.dashboard', compact('stats'))
    ->title('Dashboard');

Layout: themes/panels/admin/_layouts/app.mucrm.php. Login do painel usa panels.admin._layouts.auth.


Componentes (partials)

<?= view('_components.title', ['title' => 'Minha Conta']) ?>
<?= view('_components.alert-message') ?>
<?= view('Shop.partials.item-row', ['item' => $item]) ?>
Você escreveArquivo
_components.web.titlethemes/default/_components/web/title.mucrm.php
panels.admin._components.inputthemes/panels/admin/_components/input.mucrm.php
Shop.partials.item-rowapp/modules/shop/views/partials/item-row.mucrm.php

O que não fazer

O helper global view() tem só dois argumentos: caminho e dados. Não passe o layout como segundo parâmetro. Layout vai em protected string $layout no handler.

Mais em Layouts eComponentes.