Добавление пользовательского HTML в тег в Zend Framework 2

#php #zend-framework2

#php #zend-framework2

Вопрос:

Я пытаюсь добавить некоторые пользовательские html-теги в свой сценарий head в моем макете via. контроллер. Моя конечная цель — добавить следующее в теги my head:

 <noscript><meta http-equiv="refresh" content="5"></noscript>
 

Я могу добавить сам мета-тег обновления, используя $headMeta->appendHttpEquiv() , но я понятия не имею, как я могу обернуть это в <noscript></noscript> теги. Это нужно добавить только на одну страницу, но мне не нужен отдельный файл макета для этого. Я также хочу использовать любые методы и функции, которые предлагает ZF2 (если таковые имеются). Я просмотрел документированные помощники просмотра, но не могу найти ни одного, который поможет.

Есть идеи?

Ответ №1:

Вы должны быть в состоянии сделать это с помощью помощника-заполнителя.

В вашем макете:

 <html>
    <head>
        <?=$this->placeholder('customHead')?>
     [etc.]
 

Затем в представлении для страницы, на которой вы хотите ее разместить:

 $this->placeholder('customHead')->set('<noscript><meta http-equiv="refresh" content="5"></noscript>');
 

смените customHead имя на любое, какое захотите.

Редактировать: Да, вы можете сделать это в действии контроллера вместо этого:

 public function someAction()
{
    $viewHelperManager = $this->getServiceLocator()->get('viewhelpermanager');
    $placeholder = $viewHelperManager->get('placeholder');
    $placeholder->getContainer('customHead')->set('<noscript><meta http-equiv="refresh" content="5"></noscript>');
}
 

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

Комментарии:

1. Спасибо, Тим, работает очаровательно. Помечено как правильное. Есть ли какой-либо способ сделать это из контроллера вместо представления?