Zend Framework 2:从headMeta()视图Helper清除一些元参数?

时间:2013-03-30 01:39:12

标签: php zend-framework2

我在Module.php中设置了几个默认的元参数:

$hm =  $serviceManager->get('ViewHelperManager')->get('headMeta');
$hm
  ->appendProperty('og:image', '/images/opengraph/1.jpg')
  ->appendProperty('og:image', '/images/opengraph/2.png');

后来在某个动作中,我需要覆盖这些元参数并设置其他一些图像。我不知道如何清除这些现有的'og:image'参数......我试过了:

$hm->appendProperty('og:image', null);
//and
$hm->unsetProperty('og:image');

但都没有效果。有什么帮助吗?

1 个答案:

答案 0 :(得分:2)

那是因为append方法不会在已定义的图像上添加og:image。 append方法会将下一个og:image附加到已定义的og:image,最后会得到一个数组。同样,如果你选择prepend,这会在你定义的那个之前添加新的og:image标签。

我认为你真正想要的是最初设置属性,而不是将其添加到其中。

$hm =  $serviceManager->get('ViewHelperManager')->get('headMeta');
$hm->setProperty('og:image', '/images/opengraph/1.jpg');

然后:

$hm->setProperty('og:image', '/images/opengraph/2.jpg');

甚至更晚:

$hm->setProperty('og:image', '/images/opengraph/2.jpg');

如果您绝对想要删除列表,作为最后的手段,您可以看到此链接:Zend Framework: Clearing/Resetting HeadLink, HeadMeta, HeadScript, HeadStyle and HeadTitle基于ZF1,但查看ZF2代码似乎是相同的。

对于整体挑战而言,或许更好的解决方案并不是急切地设置模块中的og:image,而是始终尽可能晚地设置它们,这样你就不会遇到这种情况。