CakePHP afterRender вызывается до отображения страницы

Я обновляю приложение CakePHP 1.3 до CakePHP 2.9.6.

Наш ExtendedFormHelper (расширяет AppHelper) содержит функцию afterRender, которая используется для добавления сценариев после визуализации содержимого.
В версии 1.3 все это работает правильно. Однако в версии 2.x функция afterRender вызывается до отображения любого содержимого. (проверил, поставив die(); в функции afterRender и я просто получаю пустую страницу)

Я также пытался с обратным вызовом afterLayout, но это та же проблема.

Я использую файл макета, который содержит $this->fetch('content'),

Кто-нибудь может указать мне правильное направление относительно того, почему это может происходить? Я проверил документацию, но, насколько я вижу, обратный вызов должен работать так же.

РЕДАКТИРОВАТЬ:

функция afterRender в расширенном помощнике:

function afterRender($viewFile) {
if (strlen($this->body) > 0) {
$this->_View->start('afterRenderBody');
echo $this->body;
$this->_View->end();
}

$afterRenderScripts = "";

if (strlen($this->script) > 0) {
$afterRenderScripts .= $this->functions;
$afterRenderScripts .= 'jQuery(document).ready(function ($) {';
if (!empty($this->formId)) {
foreach ($this->formId as $formId) {
$afterRenderScripts .= $this->_View->element('extended_form/validate/after_render_script', array('formId' => $formId, 'rules' => $this->rules));
}
}
$afterRenderScripts .= $this->script;
$afterRenderScripts .= '});';
}$afterRenderScripts .= "jQuery(document).ready(function($) {
console.log('some extra scripts');
});";

//echo '<script type="text/javascript">' .  $afterRenderScripts . "</script>";
$this->Html->scriptBlock($afterRenderScripts, array('block' => 'afterRenderScripts', 'inline' => false));
}

$ this-> body и $ this-> script — это всего лишь 2 переменные в моем помощнике.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector