{"record":{"id":"1ed8db6110fdea30","repo":"octobercms/october","slug":"missing-a-blueprint-source-in-the-controller","errorCode":null,"errorMessage":"Missing a blueprint source in the controller.","messagePattern":"Missing a blueprint source in the controller\\.","errorType":"exception","errorClass":"October\\Rain\\Exception\\SystemException","httpStatus":null,"severity":"error","filePath":"modules/tailor/behaviors/PreviewController.php","lineNumber":127,"sourceCode":"    /**\n     * hasPreviewPage\n     */\n    public function hasPreviewPage(): bool\n    {\n        return $this->getPreviewPageName() !== null;\n    }\n\n    /**\n     * getPreviewPageName\n     */\n    protected function getPreviewPageName(): ?string\n    {\n        if ($this->previewPageName !== null) {\n            return $this->previewPageName;\n        }\n\n        if (!$blueprint = $this->activeSource) {\n            throw new SystemException('Missing a blueprint source in the controller.');\n        }\n\n        // Find page with component\n        $theme = $this->getTheme();\n        $cacheKey = self::getPreviewPageCacheKey($theme);\n        $lookupKey = \"{$this->componentName}.{$blueprint->handle}\";\n        $result = [];\n\n        // Check cache\n        $cached = Cache::memo()->get($cacheKey, false);\n        if ($cached !== false && ($cached = @unserialize($cached, ['allowed_classes' => false])) !== false && is_array($cached)) {\n            if (array_key_exists($lookupKey, $cached)) {\n                return $cached[$lookupKey];\n            }\n            else {\n                $result = $cached;\n            }\n        }","sourceCodeStart":109,"sourceCodeEnd":145,"githubUrl":"https://github.com/octobercms/october/blob/b608633a7e8922487d91a8161499020121c3b3bf/modules/tailor/behaviors/PreviewController.php#L109-L145","documentation":"Error \"Missing a blueprint source in the controller.\" thrown in octobercms/october.","triggerScenarios":"Thrown at modules/tailor/behaviors/PreviewController.php:127 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"b608633a7e8922487d91a8161499020121c3b3bf","analyzedAt":"2026-08-21T04:24:57.515Z","schemaVersion":2},"datasetVersion":"2026-08-21T11:28:35.574Z"}