Zend Framework: проверьте, установлен ли Zend View Placeholder - PullRequest
2 голосов
/ 21 июля 2010

Как проверить, установлен ли заполнитель Zend View, прежде чем выводить его? Поскольку я хочу добавить «-» к нему перед выводом.

Я пытался

echo isset($this->placeholder('title')) 
    ? ' - ' . $this->placeholder('title') 
    : '';

Но я получил

Неустранимая ошибка: невозможно использовать метод return значение в контексте записи в D: \ Projects \ Websites \ PHP \ ZendFramework \ LearningZF \ приложения \ раскладок \ Scripts \ layout.phtml по линии 5

Кстати, почему я получил эту ошибку, почему она не отображается в скрипте просмотра ошибок? Ошибка была показана на пустой странице без макета.

Ответы [ 3 ]

3 голосов
/ 24 июля 2010

Причину фатальной ошибки см. В вопросе PHP: нельзя использовать возвращаемое значение метода в контексте записи .

Таким образом, вы можете использовать временную переменную или $this->placeholder()->getRegistry()->containerExists("key"), которая возвращает логическое значение.

echo ($this->placeholder()->getRegistry()->containerExists("title")) ? " - " . $this->placeholder("title") : "";
1 голос
/ 27 мая 2016

Другой способ сделать это:

// get a placeholder registry instance and create a container
$registry = Zend_View_Helper_Placeholder_Registry::getRegistry();
$myPlaceholder = $registry->createContainer('myPlaceholder');

Затем вы можете проверить, существует ли заполнитель с помощью:

$registry->containerExists('myPlaceholder')

Или проверить содержимое заполнителя с помощью:

$myPlaceholder->getValue();

И, конечно, рендеринг, просто повторяя его.

0 голосов
/ 20 апреля 2012

Предупреждение: отсутствует аргумент 1 для Zend_View_Helper_Placeholder :: placeholder () в /library/Zend/View/Helper/Placeholder.php в строке 72

Примечание: неопределенная переменная: имя в / library /Zend / View / Helper / Placeholder.php в строке 74

Неустранимая ошибка: вызов неопределенного метода Zend_View_Helper_Placeholder_Container :: getRegistry () в /path/to/index.phtml в строке 109

За мой комментарий к ответу Бенджамина Кремера (приведенная выше фатальная ошибка) я нашел хорошее простое решение:

$content = $this->placeholder('placeholderName')->getValue();
if (!empty($content)) {
    echo $content;
}
...