возврат smarty шаблона в ajax в админке

не получается решить вопрос с шаблонами в ajax ответе в админке
например для пользовательской части сайта есть записи возвращающие сформированный tpl в ajax

protected function EventInfoboxInfoBlog() {
 
        // * Если блог существует и он не персональный
        if (!is_string(F::GetRequest('iBlogId'))) {
            $this->Message_AddErrorSingle($this->Lang_Get('system_error'));
            return;
        }
 
        if (!($oBlog = $this->Blog_GetBlogById(F::GetRequest('iBlogId'))) /* || $oBlog->getType()=='personal'*/) {
            $this->Message_AddErrorSingle($this->Lang_Get('system_error'));
            return;
        }
 
        // * Получаем локальный вьюер для рендеринга шаблона
        $oViewer = $this->Viewer_GetLocalViewer();
 
        $oViewer->Assign('oBlog', $oBlog);
        // Тип блога может быть не определен
        if (!$oBlog->getBlogType() || !$oBlog->getBlogType()->IsPrivate() || $oBlog->getUserIsJoin()) {
            // * Получаем последний топик
            $aResult = $this->Topic_GetTopicsByFilter(array('blog_id' => $oBlog->getId(), 'topic_publish' => 1), 1, 1);
            $oViewer->Assign('oTopicLast', reset($aResult['collection']));
        }
        $oViewer->Assign('oUserCurrent', $this->oUserCurrent);
 
        // * Устанавливаем переменные для ajax ответа
        $this->Viewer_AssignAjax('sText', $oViewer->Fetch('commons/common.infobox_blog.tpl'));
    }


Однако в админке подобные записи не работоспособны, да и примеров в родных экшнах нет, подскажите как правильно использовать эту запись
$oViewer = $this->Viewer_GetLocalViewer();
$oViewer->Assign('oBlog', $oBlog);
$oViewer->Assign('oUserCurrent', $this->oUserCurrent);
$this->Viewer_AssignAjax('sText', $oViewer->Fetch('commons/common.infobox_blog.tpl'));

в админке?

Похожие статьи

  • Изменение ленты на лету
    При изменении настроек «Ленты» мы получаем инфо «Внимание. Настройки ленты сохранены.» При этом список топиков обновляется в соответствии с новыми настройками только при рефреше страницы. Возможно ли делать это на...
  • Комментарии на AJAX
    Установил плагин opencomments. Подредактировал файлы шаблона и вроде все хорошо, но тут заметил такую фишку. Если открыть топик для чтения, то форма добавления комментария работает как надо. В том числе и при нажатии ...
  • Плагин "Быстрый поиск по блогам"
    Здравствуйте уважаемые хабровчане альтовчане. Представляю Вашему вниманию небольшой плагинчик идею (иконку и дизайн) которого предложил многоуважаемый O3OH.
  • Переход между вкладками профиля на Ajax
    Переключение между вкладками профиля без перезагрузки страницы на Ajax значительно бы ускорило работу пользователя с профилем, а следовательно и активность на сайте. К тому же сократило бы траффик как на стороне...

6 комментариев

0
Скорее всего проблема в том, что не установлен формат ответа.
E::ModuleViewer()->SetResponseAjax('json');
0
Спасибо, но не в этом дело — я устанавливаю его ранее

Если использовать просто ajax все работает:

          $this->Viewer_SetResponseAjax("json");

                $this->Message_AddNotice("Найдено!");
                $this->Viewer_AssignAjax("certs", $oCert);
 


а если пробовать так:

$this->Viewer_SetResponseAjax("json");
$oViewer = $this->Viewer_GetLocalViewer();

                $oViewer->Assign("certs", $oCert);

                $this->Message_AddNotice("Найдено!");
                
                $this->Viewer_AssignAjax("sText", $oViewer->Fetch("commons/common.infobox_blog.tpl"));

не работает
Отредактирован:
0
Что вы подразумеваете под неработоспособны? Попробуйте вывести данные просто на странице экшна без аякса, скорее всего проблема совсем не в аякс.
0
С данными все отлично, это я уже отладил.
Как только подключаю строку
$this->Viewer_AssignAjax(«sText», $oViewer->Fetch(«commons/common.infobox_blog.tpl»)
сразу ошибка — шаблон не найден в директории, хотя я его уже куда только не прикладывал
0
Если вы плагине используете, то нужно указывать путь.
$oViewer=E::ModuleViewer()->GetLocalViewer();
$oViewer->Assign('certs',$oCert);
$sTextResult=$oViewer->Fetch(Plugin::GetTemplatePath(__CLASS__)."commons/common.infobox_blog.tpl");
0
Спасибо!
Как раз к вашему ответу пробовал это использовать. Коллективный разум — работает быстрее))
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.