Site

Compartilhando Dados com Views

v4

Os dados chegam na view a partir do handler. Tudo que você passa no array fica disponível como variável — $user, $orders, etc.


Via handler (forma principal)

O handler busca os dados e envia para a view:

return $this->view('user.profile', [
    'user' => $user,
    'orders' => $orders,
    'title' => 'Meu Perfil',
]);

Usando compact()

Atalho do PHP quando você já tem variáveis definidas:

$user = account();
$orders = shop_order::where('user_id', $user->id)->get();
$title = 'Meu Perfil';

return $this->view('user.profile', compact('user', 'orders', 'title'));

Na view

Use PHP normal com e() para segurança:

<h1><?= e($title) ?></h1>
<p>Olá, <?= e($user->memb_name) ?></p>

<?php foreach ($orders as $order): ?>
    <div>Pedido #<?= e($order->id) ?></div>
<?php endforeach; ?>

Em partials com view()

Ao incluir componentes, passe só o que o componente precisa:

<?= view('_components.sidebar', ['user' => $user]) ?>

Dados de módulos com plug()

Para widgets (rankings na home, últimas notícias), o handler do módulo retorna dados e a view do tema chama plug():

<?php $rankings = plug('hall_fame::home@rankings'); ?>
<?php if ($rankings): ?>
    <?php foreach ($rankings as $row): ?>
        <span><?= e($row->name) ?></span>
    <?php endforeach; ?>
<?php endif; ?>

Variáveis reservadas

Evite passar estas chaves no array de dados do handler:

contentInjetada automaticamente pelo layout
content_for_layoutAlias do conteúdo no layout

Boas práticas

  • Envie só o que a view precisa — não passe o model inteiro se usar 2 campos
  • Processe e filtre dados no handler, não na view
  • Use with() no model para carregar relações antes de enviar à view
  • Formulários com erro: old('campo') repõe o valor digitado