Views de Módulos
v4As telas de um módulo ficam em app/modules/nome/views/ com extensão.mucrm.php. São arquivos HTML com PHP — use <?= e($var) ?>para exibir dados com segurança.
Onde ficam
app/modules/shop/views/
├── shopping.mucrm.php ← Shop.shopping
├── show.mucrm.php ← Shop.show
└── admin/
└── index.mucrm.php ← Shop.admin.indexA notação Shop.shopping vira o caminho views/shopping.mucrm.phpdentro do módulo shop.
Chamando no handler
// No handler:
return $this->view('Shop.shopping', compact('items'));
return $this->view('Shop.admin.index', $data);Os dados passados no array ficam disponíveis como variáveis na view (ex: $items, $data).
Exemplo de view
<?php foreach ($items as $item): ?>
<div class="item-card">
<h3><?= e($item->name) ?></h3>
<p><?= e($item->price) ?> moedas</p>
<a href="<?= e(to('shoppings.show', ['id' => $item->id])) ?>">Ver</a>
</div>
<?php endforeach; ?>Incluir componentes
Use view() para incluir pedaços reutilizáveis — do tema ou do próprio módulo:
<?= view('_components.alert-message') ?>
<?= view('Shop.partials.item-row', ['item' => $item]) ?>Personalizar pelo tema
Quer mudar a aparência de um módulo sem alterar o código dele? Crie a mesma view dentro do tema ativo:
themes/default/modules/shop/views/shopping.mucrm.php
// ↑ Sobrescreve a view do módulo sem alterar app/modules/shop/Veja Temas.
Widget com plug()
Para mostrar dados de um módulo em outra página (ex: últimas notícias na home), o handler retorna dados e a view do tema chama plug():
<?php $posts = plug('post::web@index'); ?>
<?php if ($posts && $posts->is_not_empty()): ?>
<?php foreach ($posts as $post): ?>
<h3><?= e($post->title) ?></h3>
<?php endforeach; ?>
<?php endif; ?>Boas práticas
- Mantenha lógica pesada no handler, não na view
- Sempre use
e()ao exibir dados do usuário ou banco - Separe telas grandes em partials com
view() - CSS/JS extras: Assets de Módulos