2010-07-21 6 views
2

Comment puis-je vérifier si un espace réservé à Zend View est en train d'être converti? Comme je veux ajouter "-" avant de le sortir.Zend Framework: Vérifiez si l'espace réservé à Zend View est

J'ai essayé

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

mais je me suis

Fatal error: Can't use method return value in write context in D:\Projects\Websites\php\ZendFramework\LearningZF\application\layouts\scripts\layout.phtml on line 5

Sur une note de côté, comment se fait quand je suis arrivé cette erreur, pourquoi pas indiqué dans l'erreur Afficher le script? L'erreur a été affichée dans une page vierge sans mise en page.

Répondre

3

Pour la cause de l'erreur fatale, voir la question PHP : can’t use method return value in write context.

Vous pouvez donc utiliser une variable temporaire ou $this->placeholder()->getRegistry()->containerExists("key") qui renvoie un booléen.

echo ($this->placeholder()->getRegistry()->containerExists("title")) ? " - " . $this->placeholder("title") : ""; 
+0

C'était une bonne idée en théorie, mais j'ai eu une erreur fatale avec votre solution .. :(plus j'ai découvert un beaucoup plus simple. –

0

Warning: Missing argument 1 for Zend_View_Helper_Placeholder::placeholder() in /library/Zend/View/Helper/Placeholder.php on line 72

Notice: Undefined variable: name in /library/Zend/View/Helper/Placeholder.php on line 74

Fatal error: Call to undefined method Zend_View_Helper_Placeholder_Container::getRegistry() in /path/to/index.phtml on line 109

par mon commentaire à la réponse de Benjamin Cremer (erreur fatale ci-dessus), je suis venu avec une solution simple et agréable:

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

Une autre façon de le faire:

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

Ensuite, vous pouvez vérifier s'il existe un espace réservé avec:

$registry->containerExists('myPlaceholder') 

Ou vérifier le contenu de votre espace réservé avec:

$myPlaceholder->getValue(); 

Et bien sûr, en faisant écho à rendre simplement.