routing
-
Basic Route
Define a route with one access attribute on the payload — no XML, no YAML, no config files.
-
Adding Pages and Routes
Creating a module and its first route end to end: JSON and HTML responses, where each class goes, how discovery finds it, a custom 404, and the usual mistakes.
-
Parameterized Route
Path parameters with regex constraints, how the hydrator injects them, and why a default does not make a segment optional.
-
Env Route Override
Keep the payload as the route source of truth while allowing operations to remap the public URL through .env.
-
Payload As A Shield
Hydration happens before the handler, and each setter owns the normalization and guard logic for its own field.
-
Payload Parts
One module owns the route, another module can extend the same payload contract without forking or reopening the base class.
-
Content Negotiation
One endpoint, multiple response formats — automatically.
-
Public Payload
Anonymous endpoints opt in explicitly with the public access attribute. Every other payload requires authentication.
-
Debugging Routes
Three commands that answer why a route is not matching, what it resolves to, and which template finally renders it.