2010-11-28 3 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'); 

ответ

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); 
    } 
} 
0

Tes Ted это, и она работает:

В 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

Try это то

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

Проблема с кодом является то, что ошибки по умолчанию пустой раскладка. Если вы не используете этот макет, вам нужно указать макет ошибки. В приведенном выше примере RabidFire задает пустой макет. Укажите вместо этого макет, который вы хотите использовать - в этом случае public.ctp/

Смежные вопросы