Как установить заголовок страницы на пользовательской странице 404? - PullRequest
3 голосов
/ 28 ноября 2010

У меня есть вызов на страницу 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 ]

3 голосов
/ 29 ноября 2010

Я только что ответил на этот вопрос в другой теме .

Вам нужно будет создать error.php в корне вашего приложения со следующим кодом:

<?php
class AppError extends ErrorHandler  {
    function error404($params) {
        $this->controller->set('title_for_layout', 'Your Title');
        parent::error404($params);
    }
}
0 голосов
/ 29 ноября 2010

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

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

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

0 голосов
/ 28 ноября 2010

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

В 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');
...