我是Cakephp的新手,我开发了我的整个网站,但在某些时候,当有人输入我的网站名称www.example.com/controllername/action
时,它打开正确,但是任何人输入www.example.com/xyz
,那么它会显示错误,如
Missing Controller
Error: xyzController could not be found.
Error: Create the class xyzController below in file: app/Controller/xyzController.php
<?php
class xyzController extends AppController {
}
Notice: If you want to customize this error message, create app/View/Errors/missing_controller.ctp
Stack Trace
APP/webroot/index.php line 109 → Dispatcher->dispatch(CakeRequest, CakeResponse)
同样的过程适用于我输入www.example.com/controllername/xyz
之类的操作,然后显示错误,如
Notice: If you want to customize this error message, create app/View/Errors/missing_action.ctp
如果我在视图文件夹中创建该文件,然后在页眉页脚中显示未定义的变量,我在动态调用variable.what,我会做什么来删除此消息。请指教我,谢谢高级。
答案 0 :(得分:0)
如果您的网站用户看到类似这样的错误消息,则表示您没有将debug
设置为0
它应该正在制作中。
确保在 app / Config / core.php 中设置Configure::write('debug', 0);
。仅在站点的暂存或本地副本上启用调试,否则您可能会向实际站点上的用户泄露可能导致漏洞的错误消息。
将debug
设置为0
时,错误只会记录在应用的 error.log 中,并且用户将会收到404页面。这是正确的,因为缺少的控制器在技术上是一个错误。
您遇到这样的错误,因为您在首次安装CakePHP时使用魔术路由设置来帮助您构建应用程序。考虑在 routes.php 中明确定义所有应用程序路由并通过从文件中删除此行来禁用默认路由行为是个好主意: -
require CAKE . 'Config' . DS . 'routes.php';
如果这样做,您将不会收到不存在的页面的任何错误消息,但您也将无法访问尚未定义路由的任何页面。这不一定是坏事,Beware the Route to Evil对此很好。
答案 1 :(得分:0)
只需使用您的自定义消息和样式在给定位置创建app / View / Errors / missing_action.ctp文件即可。然后在你的appController文件中写下这个:
function beforeRender () {
if ($this->name == 'CakeError') {
$this->layout = false;
}
}
希望这对你有用。 :)