MadTransporter
Embed de outro MadComponent via AJAX.
Mad\Ui\MadTransporter é um helper minúsculo — um único método estático,
energize($name, $params = []) — que recarrega via AJAX um componente
<mad-transporter> já presente na tela, identificado pelo seu atributo
name. É a forma recomendada de atualizar um transporter a partir de uma action
PHP, sem precisar montar a op manualmente.
Para a tag <mad-transporter> em si (props, uso dentro de
cards/tabs, forwardParams, method="...(args)" inline) ver
mad-transporter (componente).
Esta página cobre só Mad\Ui\MadTransporter::energize(), o lado servidor
que dispara o recarregamento.
O componente, rapidamente
Um <mad-transporter> carrega outro MadComponent (ou página)
dentro de um slot via AJAX — usado para embutir listagens, calendários ou painéis numa
página/card/aba sem full reload:
<mad-transporter name="pedidos" class="PedidoListagem" method="show" height="400px" />
Recarregar com energize()
Depois que uma action em outro componente da tela muda dados que o transporter exibe (ex.:
salvar um pedido que aparece numa listagem embutida), recarregue-o pelo name:
use Mad\Ui\MadTransporter;
use Mad\Http\MadResponse;
public function onSave(): MadResponse
{
// ... salvar ...
return MadToast::success('Salvo!')
->closeDrawer()
->merge(MadTransporter::energize('pedidos'));
}
| Método | Retorno | Descrição |
|---|---|---|
energize(string $name, array $params = []) | static MadResponse | Devolve um MadResponse pronto, com a op de recarregar o transporter de nome $name. |
Parâmetros extras são opcionais — mesclados aos params já configurados no client:
use Mad\Ui\MadTransporter;
// Recarrega passando parâmetros extras — mesclados aos params atuais do
// <mad-transporter> no client
return MadTransporter::energize('pedidos', ['status' => 'aprovado']);
Equivalente via MadResponse
MadTransporter::energize() existe só por simetria com
MadToast/MadMessage — sob o capô chama exatamente o método
energize() de MadResponse:
// MadTransporter::energize() é só um atalho — equivale a:
return (new MadResponse())->energize('pedidos', ['status' => 'aprovado']);
Quando usar energize vs outras opções
| Situação | Use |
|---|---|
Recarregar um <mad-transporter> nomeado inteiro | MadTransporter::energize($name) |
Atualizar/inserir uma linha específica de <mad-grid> | MadResponse->manageRow() |
| Substituir um trecho de HTML qualquer | MadResponse->html($seletor, $html) |
| Renderizar um componente síncrono dentro de um seletor, sem round-trip | MadResponse->teleport() |
Não recarregue a página inteira (script('location.reload()')) para
atualizar um transporter — isso descarta o estado de toda a tela, não só do trecho
afetado. Use energize(), que recarrega apenas o transporter nomeado.