Site

Views de Módulos

v4

As 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.index

A 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