2

エコーアウトする前に、Zend Viewプレースホルダーが設定されているかどうかを確認するにはどうすればよいですか?出力する前に「-」を付けたいので。

私は試した

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

しかし、私は得ました

致命的なエラー:5行目のD:\ Projects \ Websites \ php \ ZendFramework \ LearningZF \ application \ layouts \ scripts\layout.phtmlの書き込みコンテキストでメソッドの戻り値を使用できません

ちなみに、このエラーが発生したのはなぜですか。エラービュースクリプトに表示されないのはなぜですか。エラーは、レイアウトのない空白のページに表示されました。

4

3 に答える 3

3

致命的なエラーの原因については、質問PHP:書き込みコンテキストでメソッドの戻り値を使用できませんを参照してください。

したがって、一時変数を使用するか$this->placeholder()->getRegistry()->containerExists("key")、ブール値を返す変数を使用できます。

echo ($this->placeholder()->getRegistry()->containerExists("title")) ? " - " . $this->placeholder("title") : "";
于 2010-07-24T19:40:04.177 に答える
1

これを行う別の方法:

// 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();

そしてもちろん、単にそれをエコーすることによってレンダリングします。

于 2016-05-26T21:08:06.950 に答える
0

警告:72行目の/library/Zend/View/Helper/Placeholder.phpにZend_View_Helper_Placeholder :: placeholder()の引数1がありません

注意:未定義の変数:74行目の/library/Zend/View/Helper/Placeholder.phpの名前

致命的なエラー:109行目の/path/to/index.phtmlにある未定義のメソッドZend_View_Helper_Placeholder_Container :: getRegistry()を呼び出す

Benjamin Cremerの回答(上記の致命的なエラー)に対する私のコメントによると、私は素晴らしい簡単な解決策を思いつきました:

$content = $this->placeholder('placeholderName')->getValue();
if (!empty($content)) {
    echo $content;
}
于 2012-04-20T02:05:14.477 に答える