Helper view()
v4view() 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ê escreve | Arquivo |
|---|---|
| _components.web.title | themes/default/_components/web/title.mucrm.php |
| panels.admin._components.input | themes/panels/admin/_components/input.mucrm.php |
| Shop.partials.item-row | app/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.