Zend 框架:元属性集成

2023-11-22

我正在尝试根据页面内容将一些元(采用以下格式)添加到页面的头部:

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

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

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

在标头中生成以下内容:

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

有没有办法让Zend生成metaproperty field?

谢谢


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

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

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

to

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

[顺便说一句,可能值得向 ZF 跟踪器提出问题,建议从内联代码中提取此正则表达式模式,并将其放置为类的受保护成员。这样,子类(例如您的子类)可以简单地声明一个新模式,而不是“复制”如此多的父代码。但在我向他们建议之前,我必须进行更多的观察和测试。]

无论如何,只是在黑暗中刺一下......

更新:2010-12-17

我发现需要做更多的工作才能使其发挥作用。您需要覆盖受保护的成员$_typeKeys和受保护的方法_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()签入的模式Zend_View_Helper_HeadMeta::__call()被分解为一个受保护的成员,称为类似的东西$_callPattern。那么扩展类就不必复制大部分__call()方法。它只需要覆盖受保护的成员$_typeKeys and $_callPattern并实现受保护的方法_normalizeType(),如上图所示。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Zend 框架:元属性集成 的相关文章

  • php 发送带有图像的电子邮件

    我正在尝试发送一封带有图片的电子邮件 我的电子邮件正文是 当我收到电子邮件时 我看不到图片 相反 我 看 img src http planet earth bogus us icons secret pictures gif 我知道这是因
  • 减小android facebook SDK的大小

    我们正在使用facebook sdk让用户登录我们的应用程序 但 SDK 相当大 因此它增加了我们的 apk 大小 由于我们只使用登录功能 因此不需要 SDK 的其他模块 共享 消息传递等 有什么办法可以让我们在项目中只添加SDK所需的功能
  • Facebook - Curl 错误 SSL_CACERT SSL 证书

    我正进入 状态 Curl 错误 SSL CACERT SSL 证书问题 无法获取本地颁发者证书 当要求 Facebook刮我的页面 https developers facebook com tools debug sharing 通过 h
  • 从 FB 页面获取 FB APP_ID

    您好 我想知道如果我创建了 Facebook 页面 没有普通用户 是否可以获得 FB APP ID 或者该 ID 仅供应用程序使用 谢谢 如果您是 Facebook 用户 请登录您的 ID 并转到 https developers face
  • 未经授权访问用户 Facebook ID?

    我有一个本机 FBML Facebook 应用程序 我不想让应用程序访问者完成授权过程 但我确实想知道他们的 Facebook ID 是否可以找到访问用户的 Facebook ID 而不要求他们 授权 我的应用程序 之前 我说过这是不可能的
  • FB API 调用中“无法代表此用户调用 API”

    我在调用 facebook API 时遇到问题 我正在使用 Koala 进行服务器端 api 调用 但最近在进 行 api 调用时遇到问题 所以我尝试绕过 koala 调用并使用 call 进行原始 api http 调用 但无济于事 当我
  • Android Facebook SDK 4.5.0 登录注销问题,尝试再次登录时出现无效密钥哈希错误

    我按照中所述实现了 Facebook 登录按钮https developers facebook com docs facebook login android https developers facebook com docs face
  • 如何找到 Oracle 视图的基础列和表名称?

    这听起来应该很简单 但事实并非如此 我找不到任何 Oracle 元数据 视图可以提供 Oracle 视图列的基础列和表名称 我发现这样做的唯一方法是解析视图源 SQL 这与精确的科学相去甚远 为了解释我想要什么 请考虑我在 SCOTT 模式
  • Zend Framework 2相册教程发生404错误请求的URL无法通过路由MAMP OSX匹配

    刚刚也在 IRC 频道 ZFTalk 上发布了这个 希望我能得到一些关于 ZF2 ZF2 专辑教程 使用 MAMP 的 OSX 的帮助 骨架框架 主页正在运行 问题 完成第 8 5 节 列出专辑 后 您用一些代码填充 module Albu
  • 使用Zend实现文件上传进度

    您好 我正在尝试使用 Zend 实现上传进度 但是我还没有找到任何详细的教程 指针会很有用 Thanks 我不记得曾经看过完整详细的教程来解释如何使用 Zend Framework 获取上传进度条 但这里有一些提示 如果您已经了解有关 PH
  • 文件再次获取内容不起作用替代方案

    我尝试了curl 因为file get contents在php中不起作用 任何人都可以给我解决方案 所以使用curl解决它 这里是代码 userData json decode file get contents https graph
  • FFMPEG:尝试从图像和音频创建 facebook 流时出现转换失败错误?

    目标是从图像和音频文件创建 Facebook 流 这是我的命令 ffmpeg re y loop 1 f image2 i maxresdefault jpg i audio loop mp3 ar 44100 b a 128k vcode
  • 从 Social.framework(iOS6) 获取 Facebook 访问令牌

    我需要检索我在 设置 应用程序中设置的系统帐户的 Facebook 访问令牌 我知道 Social framework iOS6 知道我所有的 FB 帐户信息 并且我可以使用 SLRequest 类对 Graph API 执行 API 调用
  • 如何以编程方式将图片上传到 Facebook?

    好的 这是我的第一个问题 如何允许我网站上的访问者在他们的 Facebook 新闻源上分享我的照片 https webapps stackexchange com questions 10140 how do i allow visitor
  • Open Graph 对象调试器与站点中的 Facebook 共享不匹配

    我正在 angularjs 应用程序中实现一个 facebook 共享按钮 在完成所有必要的操作以更新我的元标记并由 Facebook 的爬虫读取后 我发现 Facebook 的调试器工具与共享对话框显示的内容不匹配 如果我在链接上运行调试
  • 是否可以更改 Facebook Connect 网站的范围?

    我正在构建一个 Facebook 应用程序 通过 Oauth 2 0 登录 Facebook 将来当我们添加功能时是否可以向用户请求更多权限 范围 或者我们是否需要预先请求所有权限 有人用 Facebook Connect 实现过这个吗 根
  • Windows Phone 8 Facebook 登录 应用程序不允许给定 URL

    我正在尝试按照以下教程将 Facebook 登录集成到我的应用程序中facebooksdk net http facebooksdk net 我正在尝试使用Facebook 按钮控制 http facebooksdk net docs ph
  • 如何查找 PostgreSQL 数据库的上次更新时间?

    我正在使用一个批量更新的 postgreSQL 数据库 我需要知道数据库 或数据库中的表 上次更新或修改的时间 两者都可以 我看到 postgreSQL 论坛上有人建议使用日志记录并查询日志 这对我不起作用 因为我无法控制客户端代码库 你可
  • Facebook 好友请求 - 失踪好友

    我请求从我正在开发的 Android 应用程序中获取用户好友 从 Facebook Api V2 0 开始 我知道我应该只获取已经通过我的应用程序登录的用户好友 但是 尽管我知道用户的某些朋友已通过我的应用程序登录 但在请求该用户的朋友时
  • 使用 facebook api 获取好友列表

    我有以下命令 它允许我在登录用户的 Facebook 墙上发布消息 facebook gt api uid feed POST array message gt Hello I m using the FB Graph API 即使用网址h

随机推荐

  • 当 setUpClass 失败时,如何清理 Python UnitTest?

    假设我有以下 Python UnitTest import unittest def Test unittest TestCase classmethod def setUpClass cls Get some resources if e
  • iOS 视图变换动画

    我可能错过了一些简单的东西 但试图用图像视图做一个简单的 肯伯恩斯效果 首先是代码 UIView animateWithDuration 20 delay 2 options UIViewAnimationCurveLinear anima
  • 如何使用 LINQ 左连接多个表

    我正在尝试使用 LINQ 左连接三个表 我的 SQL 工作如下 Select j Id u FirstName u LastName u Role From Job j left join JobTranslator as jt on j
  • 如何使用 netfilter 挂钩在内核空间中回显数据包?

    我想在内核空间中回显一个数据包 我在这台机器上运行一个 echo 服务器 端口为 6000 现在 客户端在另一台机器上运行 向回显服务器发送数据 现在 我想做的是从内核空间回显数据包 我不想用数据包打扰服务器 它会从内核空间默默地回显 我在
  • C# 4.0 中的方法重载与可选参数[重复]

    这个问题在这里已经有答案了 哪一个更好 乍一看 可选参数似乎更好 更少的代码 更少的 XML 文档等 但为什么大多数 MSDN 库类使用重载而不是可选参数 当您选择使用可选参数 或重载 时 有什么特别需要注意的事情吗 C 4 0 中 可选参
  • 在 Javascript 中以 50 个小块执行 100K Promise

    我有一个函数可以对服务进行 REST 调用并返回一个承诺 让我们调用该函数 Execute 该函数采用 ID 并将 ID 作为 GET 参数发送到 REST 端点 该端点将 ID 与一些附加信息一起保存在 mongoDB 数据库中 在客户端
  • ggplot 图例不适用于scale_colour_manual

    我知道之前已经有人问过同样的问题 ggplot 图例 scale colour manual 不起作用 但问题涉及的数据集比我这里的数据集稍微复杂 答案建议重组数据 然后使用重组数据 但即使使用下面的简单数据 问题仍然存在 我无法解决它 因
  • 将图像从 FileReader 传递到 Angular 6 中的表单输入

    我尝试创建一个用户界面 其中有一个带有几个文本字段的表单 一个input type file and a div您可以将图像与表单的其余部分一起上传 我的目标 逻辑 使用相同的div放置图像或单击它并打开文件夹资源管理器 例如input t
  • EF Code First,将两个导航属性映射到同一对象类型

    如果我有一个User具有以下属性的类 public Guid UserPreferenceId get set public virtual DefaultUserPreference UserPreference get set publ
  • Android 静态 Application.getInstance()

    你能帮我解决这个情况吗 我们正在使用一个类的静态实例 该类扩展了 android 中的 Application public class MyClass extends Application public static MyClass g
  • 成员名称和构造函数参数名称之间的冲突[重复]

    这个问题在这里已经有答案了 可能的重复 C 中的成员与方法参数访问 我有一个班级 有一些成员 比如x y width and height 在它的构造函数中 我不会这样做 A A int x int y int width int heig
  • 如何在单独的文件夹中添加资源?

    当我尝试通过单击 添加现有项目 在资源设计器中添加资源时 该项目被放置在 资源 文件夹中 问题是 如果我在资源目录中创建一个新目录并将资源放在那里 我会收到编译器错误 无法找到文件 我无法将所有资源放在一个文件夹中 因为我必须添加 2500
  • C# 中的 Struct.Pack 等效吗?

    我正在构建一个连接到渲染应用程序的 C 客户端 但失败了 我通过剖析一个适用于这一行的Python客户端来缩小问题范围 def Startclient Click self sender e try s socket socket sock
  • Linux 中的 Java - root 和非 root 的不同外观类

    我注意到 Java 为 root 和非 root 用户提供了不同的外观类 我试图了解如何使 LAF 保持一致 此外 即使在用户 root 内也是不一致的 取决于用户 root 的登录方式 示例代码 编译并打包在laf jar import
  • 使用decimal.ToString("C") 和 CultureInfo 自定义货币符号和小数位

    我有一个问题decimal ToString C 覆盖 基本上我想做的是如下 CultureInfo usCulture new CultureInfo en US Thread CurrentThread CurrentCulture u
  • 远程远程端点 RDFLib / Redland 上的 SPARQL 查询

    我正在尝试查询远程端点并获取 owl sameAs 映射 我尝试了 RDFLib 和 Redland 但都不适合我 可能我没有正确处理名称空间 这是我在 RDFLib 中的尝试 import rdflib rdflib plugin reg
  • 静态方法中的 findViewById

    我有这个静态方法 public static void displayLevelUp int level Context context LayoutInflater inflater LayoutInflater context getS
  • 非阻塞文件读取

    如何以非阻塞模式读取二进制或文本文件的内容 对于二进制文件 当我open filename mode rb 我得到一个实例io BufferedReader 文档堡垒io BufferedReader read says 读取并返回 siz
  • 理解“finally”块

    我编写了七个测试用例来理解finally堵塞 背后的逻辑是什么finally works package core public class Test public static void main String args new Test
  • Zend 框架:元属性集成

    我正在尝试根据页面内容将一些元 采用以下格式 添加到页面的头部 使用headMeta gt appendName像这样 this gt view gt headMeta gt appendName og title some content