4

我正在使用 Zend Framework 1.8。我遇到了 headMeta() 复制元关键字的问题。

在我的 layout.phtml 中,我有
<?php echo $this->headMeta(); ?>

我有一个自定义Controller_Plugin_ViewSetup(扩展Zend_Controller_Plugin_Abstract),其中包含以下代码,在dispatchLoopStartup()函数中:
$view->headMeta()->setHttpEquiv('Content-Type', 'text/html;charset=utf-8'); $view->headMeta()->setName('keywords', 'global,generic,keywords,');

最后,在我的视图脚本中,我有以下内容:
$this->headMeta()->appendName('keywords', 'view,specific,keywords');

我期待在我的 HTML 源代码中,我会看到:
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="keywords" content="global,generic,keywords,view,specific,keywords" />

但是,我实际上看到了这一点:
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="keywords" content="global,generic,keywords," />
<meta name="keywords" content="view,specific,keywords" />

换句话说,元关键字没有按应有的方式连接在一起。我究竟做错了什么?

干杯,
马特

4

1 回答 1

5

那是因为 append 方法不会将更多的关键词附加到已经定义的列表中。append 方法会将下一个标签附加到已经定义的标签上。同样,如果您选择 prepend,这会将您的新标签添加到您在插件中定义的标签之前。

我认为,最好的办法是从插件中删除关键字占位符并将您的默认关键字存储在您的配置对象中,并在添加其他关键字的同时将它们插入到您的视图中。

于 2009-06-18T15:19:34.150 回答