Docs›Services›MadTransporter
Services

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.

Esta página é sobre a classe PHP, não sobre o componente Blade

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étodoRetornoDescrição
energize(string $name, array $params = [])static MadResponseDevolve 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çãoUse
Recarregar um <mad-transporter> nomeado inteiroMadTransporter::energize($name)
Atualizar/inserir uma linha específica de <mad-grid>MadResponse->manageRow()
Substituir um trecho de HTML qualquerMadResponse->html($seletor, $html)
Renderizar um componente síncrono dentro de um seletor, sem round-tripMadResponse->teleport()
NUNCA fazer

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.

Próximos passos