Как вы включаете помощника javascript в ErrorHanlder?

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

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

function error404 ($ params) { $this->controller->layout = 'public'; $this->controller->set('title','Страница Droptor не найдена'); родитель::error404($params); } }`

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

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


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


Ответы (2)


Блин, я не читал твой вопрос.

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

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

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

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

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

<?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");

Удачи.

person metrobalderas    schedule 29.11.2010
comment
Спасибо! Это сработало, хотя мне пришлось включить Html после того, как я отказался от добавления в JavaScript, так как его переопределение удалило включение для Html, как я полагаю. - person Justin; 29.11.2010

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

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

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

А вызвать его можно с помощью строки:

$this->cakeError('error404');
person RabidFire    schedule 28.11.2010
comment
Спасибо - я исправил это. Но как включить помощник JS? - person Justin; 28.11.2010
comment
Попробуйте использовать Javascript вместо javascript (обратите внимание на случай) в строке var $helpers = array('Javascript'); Дайте мне знать, если это поможет. - person RabidFire; 28.11.2010