Как вы устанавливаете заголовок страницы на пользовательской странице 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');

person Justin    schedule 28.11.2010    source источник


Ответы (3)



Протестировал это, и это работает:

В 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');
person RabidFire    schedule 28.11.2010
comment
Не могли бы вы опубликовать свой код? (blank.ctp, AppController и действие) - person RabidFire; 29.11.2010

Попробуйте это тогда

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

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

person Abba Bryant    schedule 29.11.2010
comment
Извините, я должен был быть ясным. Я обновил его код до нужного макета, чтобы использовать общедоступный. Правильный макет загружается со страницей ошибки, поэтому я могу подтвердить, что он работает. Я просто не могу установить заголовок страницы. Любые другие идеи? - person Justin; 30.11.2010
comment
Я схожу с ума за то, что помог тебе с чем-то? Никто из нас не публиковал плохой код — я буквально проверил то, что предоставил, и это сработало. Просто говорю - это может быть не лучший способ получить ответы на ваши будущие вопросы. - person Abba Bryant; 03.12.2010