以编程方式在 concrete5(版本 7)的单页中呈现 404

Programmatically render 404 in single page in concrete5 (version 7)

我有一个页面,它检查了一个 slug。如果在数据库 table 中找不到此 slug,则单个页面应呈现 404 页面。

我试过这样的方法:

$this->render('/page_not_found');

现在,这将转到您的活动包单页目录 (packages/your_pkg_handle/single_pages/page_not_found.php)。它应该转到活动主题而不是...我已经尝试将第二个参数设置为 "null",因为我认为那将是 pkgHandle,但没有结果。显然我遗漏了什么或者这是不可能的?

尝试

$this->replace('/page_not_found');

相反。

这有点令人费解,但其背后的原因是 $this->render() 实际上使用 current 控制器渲染视图(这意味着查看包对于视图),而 $this->replace() 将用新的控制器、视图和退出输出完全替换渲染会话。