如何在自定义404页面上设置页面标题?

时间:2010-11-28 19:35:42

标签: php cakephp cakephp-1.2

我在控制器中调用了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');

3 个答案:

答案 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 /