Site

Handlers

v4

Na v4, handlers substituem controllers. Estendem MUCRM\http\handler e retornam views ou JSON via res().

ℹ️Fluxo de resposta

$this->view() guarda path + dados. No __destruct, o engine renderiza o HTML com o layout definido.


Handler básico

namespace MUCRM\modules\billing\handlers;

use MUCRM\engine\support\{request, responder};
use MUCRM\http\handler;

class web_handler extends handler
{
    protected string $layout = '_layouts.app';

    public function index(request $req, responder $res)
    {
        $plans = billing_plan::query()->where('active', 1)->get();

        return $this->view('Billing.index', compact('plans'))
            ->title('Planos');
    }

    public function store(request $req, responder $res)
    {
        $data = $req->check([
            'plan_id' => 'required|numeric',
        ]);

        // lógica de assinatura...

        return $res->success('Plano ativado!')->to('user.panel');
    }
}

Injeção de dependências

// O dispatch resolve automaticamente:
public function show(request $req, responder $res, int $id)
{
    $profile = profile::find_or_fail($id);
    return $this->view('Profile.show', compact('profile'));
}
requestSingleton de input
responderBuilder de resposta (res())
Parâmetros da rotaInjetados por nome ($id)

Respostas

return $res->success('Salvo!')->back();
return $res->warning('Atenção')->to('user.settings');
return $res->error('Falhou')->back();

JSON (API / AJAX)

public function tooltip(request $req, responder $res): void
{
    $res->json(['html' => $html]);
}

// ou atalho:
json(['ok' => true]);

Onde colocar handlers

LocalUso
app/http/web/handlers/Páginas core do site
app/http/admin/handlers/Admin core
app/modules/{m}/handlers/Lógica do módulo