Compartilhando Dados com Views
v4Os 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:
| content | Injetada automaticamente pelo layout |
| content_for_layout | Alias 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