Real JSON null for empty product feature; SSR warm-cache button and CLI
Ticket 0068-FE: ProductFeatureJsonRenderer returned json_encode(null), which headless passes on as the STRING null (it only decodes object/array-looking strings) and crashed the front end. It now returns an empty string and the TypoScript field sets ifEmptyReturnNull = 1, giving a real JSON null. No other renderer used the pattern. Ticket 0066-FE: SsrPurgeService::warm() posts to the node /__warm endpoint (derived from SSR_PURGE_ENDPOINT, same secret), exposed as a Warm cache button with confirmation in the VITEC SSR module, a Cache warming progress row fed by /__health, and the CLI vitec:ssr-warm [paths]. Warm runs are deliberately not written to the purge log. Verified: two-path run 2/2 done, affected page delivers productfeature null. Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
This commit is contained in:
1 parent
cb53ff67ee
commit
8f8ae039d4
7 files changed
+176
-3
No files matched your search
@@ -102,6 +102,22 @@ final class SsrController
|
||||
return new RedirectResponse((string)$this->uriBuilder->buildUriFromRoute('web_vitecssr'), 303);
|
||||
}
|
||||
|
||||
/**
|
||||
* "Warm cache" button: asks the node to render every page of the
|
||||
* sitemap in the background (0066-FE). Returns at once; progress is
|
||||
* the "Cache warming" row of the status table.
|
||||
*/
|
||||
public function warmAction(ServerRequestInterface $request): ResponseInterface
|
||||
{
|
||||
$result = $this->purgeService->warm();
|
||||
$this->flash(
|
||||
$result['message'],
|
||||
$result['success'] ? 'Cache warming' : 'Cache warming failed',
|
||||
$result['success']
|
||||
);
|
||||
return new RedirectResponse((string)$this->uriBuilder->buildUriFromRoute('web_vitecssr'), 303);
|
||||
}
|
||||
|
||||
/**
|
||||
* Ajax route vitec_ssr_purge_page: purge exactly one page, called by
|
||||
* the page tree context menu item (ssr-context-menu.js).
|
||||
|
||||
Reference in new issue
Block a user