Как включить помощник по JavaScript в ErrorHanlder? - PullRequest
0 голосов
/ 28 ноября 2010

У меня есть этот пользовательский обработчик ошибок:

`класс AppError расширяет ErrorHandler {

функция error404 ($ params) { $ this-> controller-> layout = 'public'; $ this-> controller-> set ('title', 'Droptor Page Not Found'); Родитель :: error404 ($ PARAMS); } } `

И я не могу использовать любой макет, который имеет это: $javascript->link('jquery',true)

Итак, помощник JS не загружен. Но если я включу это в контроллер: var $helpers = array('javascript'); это все равно не будет работать. Также не App::import('Helper', 'javascript');

Ответы [ 2 ]

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

Дерьмо, я не читал ваш вопрос.

Чтобы добавить помощника в свой контроллер ошибок, просто добавьте эту строку:

$this->controller->helpers = array('Javascript');

Есть два способа сделать это:

Во-первых, вы можете создать app_controller , чтобы включить каждый необходимый вам компонент и помощник на всех ваших контроллерах.

Во-вторых, вы можете загрузить конкретные ресурсы, необходимые для вашего контроллера ошибок. Создайте файл с именем error.php в корне вашего приложения (НЕ webroot) со следующим кодом:

<?php
class AppError extends ErrorHandler  {
    function error404($params) {
        $this->controller->helpers = array('Javascript');
        parent::error404($params);
    }
}

Вы также можете установить пользовательский заголовок с помощью

$this->controller->set('title_for_layout', "We couldn't find what you are loooking for");

Удачи.

1 голос
/ 28 ноября 2010

Во-первых, вам не нужно создавать свой собственный обработчик, если все, что вы делаете, это обрабатывает общий тип ошибки, такой как 404. Пользовательские обработчики ошибок предназначены для ошибок вашего приложения.

ЕслиВы хотите просто изменить макет своей страницы, когда вы получаете ошибку 404, на которую было дано ответы здесь .

function beforeRender() {
    if($this->name == 'CakeError') {
        $this->layout = false;
    }
}

И вы можете вызвать это, используя строку:

$this->cakeError('error404');
...