Как проверить, есть ли Zend View Placeholder isset перед тем, как вывести его из системы? Поскольку я хочу добавить «-» к нему, прежде чем выводить его.
Я пытался
echo isset($this->placeholder('title')) ? ' - ' . $this->placeholder('title') : '';
Но я получил
Неустранимая ошибка: нельзя использовать возвращаемое значение метода в контексте записи в D: \ Projects \ Websites \ php \ ZendFramework \ LearningZF \ application \ layouts \ scripts \ layout.phtml в строке 5
- Как передать переменные в макет в приложении Zend Framework с несколькими модулями / макетами?
- Zend Framework 2 устанавливает пользовательский макет и задает проблему
- как зарегистрировать нового помощника (пользовательский помощник) в zend framework
- Где я могу сохранить частичные (представления) в Zend Framework, чтобы быть доступным для всех представлений в моем приложении?
- Zend Framework 2 - Как включить частичную библиотеку
На стороне примечания, как получилось, когда я получил эту ошибку, почему это не показано в сценарии просмотра ошибок? Ошибка была показана на пустой странице без макета.
Для причины фатальной ошибки см. Вопрос PHP: нельзя использовать возвращаемое значение метода в контексте записи .
Таким образом, вы можете использовать временную переменную или $this->placeholder()->getRegistry()->containerExists("key")
которая возвращает логическое значение.
echo ($this->placeholder()->getRegistry()->containerExists("title")) ? " - " . $this->placeholder("title") : "";
Другой способ сделать это:
// 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();
И, конечно, визуализировать, просто повторяя это.
Предупреждение: Отсутствует аргумент 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; }