我在控制器中调用了404页面:
$this->set('title','Page Not Found');
$this->cakeError('error404');
它使用我的自定义404页面,但忽略了标题。标题设置为“错误”。
你如何设置它?
public.ctp (我没有使用空白)
<?php header('Content-type: text/html; charset=UTF-8') ;?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<?php echo $html->charset('utf-8'); ?>
<title><?php echo $title_for_layout?></title>
app_controller.php
function beforeRender() {
if($this->name == 'CakeError') {
$this->set('title_for_layout', 'Page Not Found');
$this->layout = 'public';
}
}
动作
$this->pageTitle = 'Page Not Found';
$this->cakeError('error404');
答案 0 :(得分:3)
I just answered this question in another topic
您必须使用以下代码在应用的根目录中创建error.php
:
<?php
class AppError extends ErrorHandler {
function error404($params) {
$this->controller->set('title_for_layout', 'Your Title');
parent::error404($params);
}
}
答案 1 :(得分:0)
经过测试,确实有效:
在 AppController :
中function beforeRender(){
if ($this->name == 'CakeError') {
$this->layout = 'blank';
$this->set('title_for_layout', 'Page Not Found');
}
}
在布局中,blank.ctp,包括:
<title><?php echo $title_for_layout; ?> | Site Name</title>
在操作:
中$this->cakeError('error404');
答案 2 :(得分:0)
试试这个
function beforeRender(){
if ($this->name == 'CakeError') {
$this->layout = 'public';
$this->set('title_for_layout', 'Page Not Found');
}
}
您的代码存在的问题是错误默认为空布局。如果您不使用该布局,则需要指定错误布局。在上面的示例中,RabidFire指定了空白布局。请指定您要使用的布局 - 在本例中为public.ctp /