View Usage
Render a page with a layout
The normal page flow is:
- set a layout
- add any shared params
- call
render()for the page body - send the returned HTML in the response
view()->setLayout('layouts/main', [
'css' => ['/css/app.css'],
'js' => ['/js/app.js'],
]);
view()->setParams([
'title' => 'Settings',
'user' => $user,
]);
$html = view()->render('pages/settings');
Use this path when the page should inherit the application's main layout and asset output.
Render a fragment
Use renderPartial() or partial() for reusable fragments:
$html = partial('partials/flash', [
'message' => 'Profile saved.',
]);
This does not require setLayout().
Pass trusted HTML intentionally
By default, string params are escaped before rendering.
If you already trust a value and want to output it as HTML, mark it explicitly:
view()->setParam('content', raw_param($trustedHtml));
Do this sparingly. Normal user input should stay in the default escaped path.
Read data back inside layout or shared code
The shared param bag is readable:
$title = view_param('title');
getContent() is useful in a layout wrapper after a full page render has already happened:
$body = view()->getContent();
Reset shared state when needed
Because view() returns a shared instance, params and layout asset definitions can carry over between calls.
Use flushParams() when you intentionally want to clear previously assigned values before another render path. When you are switching from a full page flow to a different layout flow, pair that with a fresh setLayout() call.
view()->flushParams();
view()->setLayout('layouts/account', [
'css' => ['/css/account.css'],
]);
Common pitfalls
Forgetting to set a layout
render() throws immediately when no layout is set.
If you only need a fragment, use renderPartial() instead.
Expecting getContent() after a partial render
renderPartial() does not store page content for later retrieval.
Passing mutable objects with strings you still need elsewhere
The escaping step updates object string properties before rendering. Pass arrays, DTO copies, or raw values if you need the original object unchanged.