2010-11-28 189 views
3

我有一個控制器,一個404頁的電話:如何在自定義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

維護設備泰德這一點,它的工作原理:

的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'); 
+0

這不起作用,還有其他想法? – Justin 2010-11-28 20:49:15

+0

修改了我的答案。 – RabidFire 2010-11-28 21:05:25

+0

嗯,仍然沒有工作。 – Justin 2010-11-29 03:13:20

0

試試這個,然後

function beforeRender(){ 
    if ($this->name == 'CakeError') { 
     $this->layout = 'public'; 
     $this->set('title_for_layout', 'Page Not Found'); 
    } 
} 

與您的代碼的問題是錯誤默認爲空佈局。如果您不使用該佈局,則需要指定錯誤佈局。在上面的例子中,RabidFire指定了空白布局。請指定您希望使用的佈局 - 在這種情況下,public.ctp/