1

这就是我所拥有的:

评论控制器.php

if (empty($result)) { //$result is empty if comment does not exist
    $this->cakeError('error404', array('message'=>'Comment not found'));
} elseif ($result['spam'] == 1) {
    $this->cakeError('spam', array('message'=>'SPAM!!!'));
}

app_error.php

function error404($params) {
    $this->controller->set('title', 'Page not found');
    $this->controller->set('message', $params['message']);
    $this->_outputMessage('error404');
}

function spam($params) {
    $this->controller->set('title', 'Spam');
    $this->controller->set('message', $params['message']);
    $this->_outputMessage('spam');
}

我在app/views/errors 中创建了error404.ctpspam.ctp

问题是当评论是垃圾邮件时($result['spam'] == 1),cakePHP 会加载 error404 布局。但奇怪的是,它显示了垃圾评论的消息(“SPAM !!!”)。

当它是不存在的注释时,会加载正确的 error404 布局。

有任何想法吗?

编辑:问题已解决。代码是正确的,但必须重新启动服务器。这不应该是必要的,但这就是解决问题的原因。也许 cake 没有遵循新的 *app_error.php* 文件的正确路径。

4

1 回答 1

0

我很快尝试了您的设置(CakePHP 1.3),它运行良好。

我最好的猜测是,您在文件名或类名之一中有错字,并且它正在使用 error404,因为它找不到某些东西。

检查后我会打开调试器,或者你可以开始投入

die('got here: ' . __METHOD__ . __LINE__ );

语句,直到您计算出执行顺序。

于 2011-04-07T01:37:13.957 回答