gpt4 book ai didi

facebook - Zend 框架 : Meta property integration

转载 作者:行者123 更新时间:2023-11-30 05:21:45 24 4
gpt4 key购买 nike

我正在尝试根据页面内容向我的页面头部添加一些元数据(格式如下):

<meta property="og:title" content="some content" />

像这样使用 headMeta()->appendName:

$this->view->headMeta()->appendName('og:title', 'some content');

在 header 中生成以下内容:

<meta name="og:title" content="some content" />

有没有办法让 Zend 生成带有 property 字段的 meta

谢谢

最佳答案

听起来您需要创建自己的 View 助手,扩展标准 Zend Framework HeadMeta查看助手,并实现一个名为 appendProperty() 的方法,模仿 appendName() 的行为.

appendName()方法似乎在 __call() 中处理方法,看起来你的扩展类可以简单地复制相同的 __call()形成父级,但更改 preg_match() 中使用的模式来自:

'/^(?P<action>set|(pre|ap)pend|offsetSet)(?P<type>Name|HttpEquiv)$/'

'/^(?P<action>set|(pre|ap)pend|offsetSet)(?P<type>Name|HttpEquiv|Property)$/'

[作为旁注,可能值得向 ZF 跟踪器提出问题,建议将此正则表达式模式从内联代码中拉出,并将其作为类的 protected 成员放置。这样,一个子类 - 就像你的 - 可以简单地声明一个新模式,而不是“复制”这么多父代码。但在我向他们建议之前,我必须多检查和测试一下。]

不管怎样,只是在黑暗中刺一刀......

更新:2010-12-17

我发现要让它工作还需要多一点。您需要覆盖 protected 成员 $_typeKeys和 protected 方法 _normalizeType()处理您的新“属性”类型。

您的扩展类可能看起来像这样:

class Kwis_View_Helper_HeadMeta extends Zend_View_Helper_HeadMeta
{
protected $_typeKeys = array('name', 'http-equiv', 'charset', 'property');

public function __call($method, $args)
{
if (preg_match('/^(?P<action>set|(pre|ap)pend|offsetSet)(?P<type>Name|HttpEquiv|Property)$/', $method, $matches)) {
$action = $matches['action'];
$type = $this->_normalizeType($matches['type']);
$argc = count($args);
$index = null;

if ('offsetSet' == $action) {
if (0 < $argc) {
$index = array_shift($args);
--$argc;
}
}

if (2 > $argc) {
require_once 'Zend/View/Exception.php';
$e = new Zend_View_Exception('Too few arguments provided; requires key value, and content');
$e->setView($this->view);
throw $e;
}

if (3 > $argc) {
$args[] = array();
}

$item = $this->createData($type, $args[0], $args[1], $args[2]);

if ('offsetSet' == $action) {
return $this->offsetSet($index, $item);
}

$this->$action($item);
return $this;
}

return parent::__call($method, $args);
}

protected function _normalizeType($type)
{
switch ($type) {
case 'Property':
return 'property';
default:
return parent::_normalizeType($type);
}
}
}

如前所述,如果 preg_match() 可以缩短很多 checkin 的图案 Zend_View_Helper_HeadMeta::__call()被分解成一个名为 $_callPattern 的 protected 成员.这样扩展类就不必复制 __call() 的大部分内容了。方法。它只需要覆盖 protected 成员 $_typeKeys$_callPattern并实现 protected 方法 _normalizeType() ,如上所示。

关于facebook - Zend 框架 : Meta property integration,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4457467/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com