Переопределение метода в Action
Хочу заменить метод AjaxBlogInfo в /classes/actions/ActionBlog.class.php через плагин.
Читал аналогичный пост, он мне помог, но не полностью.
И так, я создал плагин состоящий из:
plugins/bloginfo/PluginBloginfo.class.php. Содержимое:
И plugins/bloginfo/classes/actions/ActionBlog.class.php. Содержимое:
Всё вроде бы работает как надо, но в некоторых местах (например, при редактировании названия блога) стала вылетать ошибка:
Не пойму, в чем ошибка, что не так?
Читал аналогичный пост, он мне помог, но не полностью.
И так, я создал плагин состоящий из:
plugins/bloginfo/PluginBloginfo.class.php. Содержимое:
<?php /** * Запрещаем напрямую через браузер обращение к этому файлу. */ if (!class_exists('Plugin')) { die('Hacking attemp!'); } class PluginBloginfo extends Plugin { // Объявление переопределений (модули, мапперы и сущности) protected $aInherits=array( 'action' => array('ActionBlog'), // <--- Сделал по аналогии с примером для hook и module ); // Активация плагина public function Activate() { return true; } // Инициализация плагина public function Init() { } } ?>
И plugins/bloginfo/classes/actions/ActionBlog.class.php. Содержимое:
<?php class PluginBloginfo_ActionBlog extends PluginBloginfo_Inherit_ActionBlog { protected function AjaxBlogInfo() { /** * Устанавливаем формат Ajax ответа */ $this->Viewer_SetResponseAjax('json'); $sBlogId=getRequestStr('idBlog',null,'post'); /** * Определяем тип блога и получаем его */ if ($sBlogId==0) { if ($this->oUserCurrent) { $oBlog=$this->Blog_GetPersonalBlogByUserId($this->oUserCurrent->getId()); } } else { $oBlog=$this->Blog_GetBlogById($sBlogId); } /** * если блог найден, то возвращаем описание */ if ($oBlog) { $sText=$oBlog->getDescription(); $this->Viewer_AssignAjax('sText',$sText); } else { // Это я добавил самостоятельно $this->Viewer_AssignAjax('sText',''); // Это я добавил самостоятельно } // Это я добавил самостоятельно } } ?>
Всё вроде бы работает как надо, но в некоторых местах (например, при редактировании названия блога) стала вылетать ошибка:
Warning: Cannot modify header information - headers already sent by (output started at .../plugins/bloginfo/classes/actions/ActionBlog.class.php:1) in .../engine/include/function.php on line 234 Warning: Cannot modify header information - headers already sent by (output started at .../plugins/bloginfo/classes/actions/ActionBlog.class.php:1) in .../engine/include/function.php on line 235
Не пойму, в чем ошибка, что не так?
3 комментария