如何将 ezComponents 与 magento 集成

2023-11-30

在“本机”Zend Framework 应用程序中,我将通过将 ezComponents 的自动加载器添加到 Zends 自动加载器来启用 ezComponents:

$autoLoader = Zend_Loader_Autoloader::getInstance();
require_once('../library/EZComponents/Base/src/base.php');
$autoLoader->pushAutoloader(array('ezcBase', 'autoload'), 'ezc'); 

现在,我想知道如何使用 Magento 做同样的事情。 有没有办法扩展 Varien_Autoload (magentos autoloader) 以实现 ezComponents 的轻松集成? 或者: 有没有一种方法可以在 Magento 自动加载器旁边使用 Zends 自动加载器而不互相干扰?

edit:

好吧,我实现了一个解决方法,通过将以下内容添加到 Varien_Autoload 中的函数 autoload() 中:

if(substr($class, 0, 3) == 'ezc'){
        require_once('EZComponents/Base/src/base.php');
        return ezcBase::autoload($class);

    }

我认为这是一个非常糟糕的 hack,因为在升级 Magento 时它会被覆盖。有人有更好的主意吗?


我的基本方法是创建一个带有观察者的自定义模块

controller_front_init_before

事件。在事件观察器中,您可以根据需要设置自动加载器。有一篇 Magento Wiki 文章设置事件观察者. The controller_front_init_beforeevent 是 Magento 中第一个触发的非通用事件之一。这就是我们使用它的原因。

我们需要解决的大问题是:Magento 的自动加载器首先在堆栈上,如果它找不到文件(EZComponent 类就是这种情况),它的包含将引发一个错误,从而停止执行。

所以,我们在上面的事件观察器中需要做的是

  1. 去除Varien_Autoloader来自spl_autoload stack

  2. 注册我们自己的自动加载器(我们将使用Zend_Autoloader,因为它随 Magento 一起提供,而且您似乎很熟悉它)

  3. 重新添加Varien_Autoloader到堆栈

自从加载了类中的类后,我们需要做一些额外的调整Zend命名空间通常由我们将删除的自动加载器处理。查看评论了解更多详情

//we need to manually include Zend_Loader, or else our zend autoloader
//will try to use it, won't find it, and then try to use Zend_Loader to
//load Zend_Loader
require_once('lib/Zend/Loader.php');


//instantiate a zend autoloader first, since we 
//won't be able to do it in an unautoloader universe
$autoLoader = Zend_Loader_Autoloader::getInstance();        

//get a list of call the registered autoloader callbacks
//and pull out the Varien_Autoload.  It's unlikely there
//are others, but famous last words and all that
$autoloader_callbacks = spl_autoload_functions();
$original_autoload=null;
foreach($autoloader_callbacks as $callback)
{
    if(is_array($callback) && $callback[0] instanceof Varien_Autoload)
    {
        $original_autoload = $callback;
    }
}

//remove the Varien_Autoloader from the stack
spl_autoload_unregister($original_autoload);

//register our autoloader, which gets on the stack first
require_once('library/EZComponents/Base/src/base.php');
$autoLoader->pushAutoloader(array('ezcBase', 'autoload'), 'ezc');           

//lets just make sure we can instantiate an EZ class
#$test = new ezcBaseFile();
#var_dump(get_class($test));

//IMPORANT: add the Varien_Autoloader back to the stack
spl_autoload_register($original_autoload);      

将上面的代码放入观察者方法中,您应该可以开始了。

您可以采取的另一种方法(更适合 Magento 模式)是创建一个实现 EZComponent 加载程序的自定义模块。

$o = Mypackage_Mymodule_Loader::getModel('ezcBaseFile');

然后,您可以在静态 getModel 方法中实现自动加载器风格的 require 代码,并在需要 ezcBaseFile 类时使用它。如果您想在某个对象上调用静态方法,您可能需要在不实例化对象的情况下加载类的方法。ezcBaseFile基类。

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

如何将 ezComponents 与 magento 集成 的相关文章

  • 在 Magento 中以编程方式创建 CMS/页面

    我看到了下面这个帖子的回复Magento 静态 CMS 块存储在哪里 https stackoverflow com questions 4932652 where are magento static cms blocks stored关
  • 如何在Magento的view.phtml中显示标签产品

    我创建了新主题并使用它们来创建产品 在查看页面中 我没有看到产品标签 我默认查看 view pthml 并知道中的标签 echo this gt getChildHtml product additional data 我的 view ph
  • Magento 多个 Authorize.net 网关

    我有一个用于处理信用卡付款的 CAD 和 USD 网关帐户 这两个帐户均来自支持 Authorize net API 的支付提供商 我已经使用 Magento 的内置 Authorize net 支持成功配置了一个 但是如何配置第二个 Au
  • Magento 1.9 注册后重定向客户

    我想在 Magento 1 9 中成功注册后将所有客户重定向到自定义页面 我已经尝试了很多事情 首先 我成功地覆盖了核心客户帐户控制器 我尝试自定义以下操作 创建后动作 successProcessRegistration welcome客
  • 如何从 Magento 的报价中删除项目?

    在结账过程中 我有时想以编程方式从会话的报价中删除项目 所以我尝试了这段代码 quote Mage getSingleton checkout session gt getQuote all quote items quote gt get
  • 关于如何处理涉及 API 集成的项目的想法

    我是一名学生 正在开发一个 Java 应用程序 该应用程序将充当一个应用程序的 Web 服务调用与另一个应用程序的 JMX API 之间的 转换层 这两个应用程序驻留在同一网络中的两个不同系统上 因此 本质上 它涉及一个可交付程序 该程序将
  • 如何配置 Magento Enterprise 使用 Solr 作为主要搜索引擎?

    我尝试寻找文档 但它非常稀疏 我编写了以下指南 希望它可以帮助人们节省 2 3 个小时的安装 设置和配置时间 与 MySQL 全文搜索标准设置相比 使用 Solr 带来的性能提升非常惊人 在您的 Magento 安装中让它工作绝对值得花时间
  • 注册到 global.asax 的路由的替代位置

    最常见的做法是在 Application Start 事件中注册路由global asax cs vb文件 但您需要有权访问该文件才能执行此操作 美好的 我要么没有 要么不想 我正在尝试将 Asp net MVC 应用程序集成到 Share
  • Magento - 检查管理员和客户是否登录

    我有一个安装了 Magento 1 4 0 1 的 Web 服务器 我有另一个与之共享凭据的网站 我已经设法检查客户是否登录 在更改 Magento 中的 cookie 位置之后 但是当我还尝试确定管理员是否登录时 事情变得复杂 我只能得到
  • 安装新的 Magento 扩展需要注销/登录,否则您会在管理页面中收到 404

    两个不同的人告诉我 以下是 Magento 的一个已知问题 安装新扩展时 管理员尝试访问 配置扩展程序 并获取 404 页面 去的方法 解决此问题的方法是注销然后登录到他的管理面板 在设计扩展时有没有办法解决这个问题 这方面有一个悬而未决的
  • 在 Magento 中获取过去 24 小时内的订单商品

    我正在尝试获取过去 24 小时内的所有订单商品 我已锁定查询 因此它返回了我需要的内容 order id 和created on 值 order items Mage getResourceModel sales order item co
  • 在网站上集成 api.ai 聊天机器人 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想在我的网站上安装一个聊天机器人 其对话风格类似于 Facebook Messenger 我希望它作为聊天窗口位于同一页面上 而不是
  • 如何获取magento中登录客户的订单列表

    我正在努力获取客户订购的订单号 名称 列表 我尝试过使用 Mage getModel sales order gt load order id 但对我不起作用 实际上 我正在开发帮助台模块并尝试将订单分配给票证 好的朋友 感谢您的提示 我通
  • reindex 目录 URL 在 magento 中重写永无止境

    我已使用自定义导入配置文件将 6K 类别和 16K 产品导入到 magento 当我尝试重新索引时 除了 目录 URL 重写 之外的所有内容都正常工作 该 目录 URL 重写 一直显示 正在处理 但从未完成 日志和异常文件不显示任何内容 我
  • 您常见的 Magento 配置错误有哪些? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Magento 2 REST API 客户自定义属性

    Magento 2 REST API 文档解释了在更新或创建客户时设置custom attributes 的方法 http devdocs magento com swagger index 20 html http devdocs mag
  • Magento:我可以在哪个文件夹中看到我安装的扩展?

    我在 magento 1 5 中安装了一个扩展 只是想知道它在我的服务器上的位置 因为我想向它写入一个包含文件 谢谢 通常在 MagentoFolder app code community SomeCompanyName SomePack
  • 与竞争的消费者顺序处理消息

    Problem 我以特定顺序 FIFO 在队列上接收消息 比如订单 我的队列中有竞争的消费者 为了进一步增加复杂性 消费者可能只对订单的特定版本感兴趣 具体取决于其状态 例如版本 1 版本 2 和版本 5 订单版本号在订单上可用 但不能用于
  • magento 删除管理菜单项

    在magento中 是否可以删除管理中的菜单项 我有一个新模块 并将评论和评级拉到一个新部分 我不反对将它们也留在目录部分 但如果可能 并且干净 我想将其从那里删除 将下一行添加到扩展 config xml 文件
  • Akka 与现有 java 项目集成的示例

    如果我已经有现有的javaWeb 应用程序使用spring and servlet容器 将 Akka 集成到其中的正确方法是什么 就像我将会有Actor1 and Actor2互相沟通的 开始使用这些演员的切入点是什么 例如 1 把它放在那

随机推荐

  • 尝试获取上个月最后一天时奇怪的 PHP 日期行为

    我刚刚注意到 PHP 日期函数表现得很奇怪 有人能解释一下我做错了什么吗 以下代码显示相同的结果
  • 在正则表达式中创建第 n 层嵌套模式的算法

    正如中所解释的可以使用正则表达式来匹配嵌套模式吗 不可能创建正则表达式来匹配任意嵌套模式 但是是否有可能创建一个算法来生成第 n 级 嵌套 的正则表达式 基本上 我想更换trim whatever with rtrim ltrim what
  • Python - beautifulsoup,应用于文件夹中的每个文本文件并生成新的文本文件

    我正在使用以下 Python Beautifulsoup 代码从文本文件中删除 html 元素 from bs4 import BeautifulSoup with open textFileWithHtml txt as markup s
  • 忽略指定值的 numpy 数组的平均值

    我有许多一维 numpy ndarray 其中包含给定节点和网络中所有其他节点之间的路径长度 我想计算其平均值 但事实上 如果两个节点之间不存在路径 则算法会针对给定连接返回值 2147483647 这一事实使问题变得复杂 如果我不处理这个
  • (视觉)SVN 通过正则表达式忽略文件

    我需要排除具有以下模式的文件 ProjectFoo Data 0 9 14 lgp 如何将 RegEx 用于 Visual SVN 忽略列表 subversion 忽略列表不支持正则表达式 它们被实现为 glob file 模式 这些模式不
  • 如何在onclick事件中调用多个JavaScript函数?

    有什么办法可以使用onclickhtml 属性调用多个 JavaScript 函数 onclick doSomething doSomethingElse 但实际上 你最好不要使用onclick并通过 Javascript 代码将事件处理程
  • Python tkinter 跟踪错误

    我正在尝试为我的代码编写一个 GUI 我的计划是使用 tkinter 的StringVar DoubleVar等来实时监控我的输入 所以我发现DoubleVar trace w callback 功能 但是 每次我进行更改时都会遇到异常 E
  • 如何检查鼠标是否位于 MovieClip 上?

    没有听众参与 问题是 我可以用鼠标移到 and 鼠标输出侦听器 但如果您足够快地将鼠标拖动到影片剪辑上 则可能不会激活其中一个侦听器 我已经尝试过好几次了 我从来没有遇到过 mouseOver 和 mouseOut 的问题 但你可以使用 h
  • 我可以使用 Flutter 更改 iOS (Android) 上的底部颜色吗

    我们可以在 Flutter 中使用 API 在 iOS Android 上更改此颜色吗 是的 您可以使用 API 来更改底部安全区域的颜色 尝试使用以下代码 我希望你的问题能够得到解决 override Widget build Build
  • 返回上一个视图控制器不起作用

    我的第一个视图控制器有一个按钮 它触发 IBActiongoTo2ndVc 它呈现了第二个 ViewController class FirstVC UIViewController IBAction func goTo2ndVc let
  • 隐式等待、显式等待、流畅等待

    隐式 显式 流利等之间有什么区别 如果我们在隐式等待中设置 10 秒 并且在 10 秒之前 则在 3 秒内只有元素被定位 到时候会发生什么 它将等待 10 秒钟或继续进行 隐式等待 隐式等待是一个配置的实现网络驱动程序实例即driver进行
  • 查看 NSCharacterSet (Swift) 中的字符[重复]

    这个问题在这里已经有答案了 当我尝试像这样列出 NSCharacterSet 中的字符时 print NSCharacterSet URLQueryAllowedCharacterSet 它不会打印出字符 而是打印出类似的内容 基于另一个答
  • SQL Server 2008,根据订单类型和订单日期时间将库存分配给销售订单数量

    我根据以下订单类型将库存先进先出分配给销售订单 DECLARE tblOrder TABLE DealerCode NVARCHAR 50 PartCode NVARCHAR 50 OrderQty INT OrderType NVARCH
  • 使用 Newtonsoft.Json 解析 json 时出现 RuntimeBinderException

    我正在尝试将简单的 json 解析为 Windows Phone 8 中的动态对象 我使用 Newtonsoft JSON 库和以下代码 dynamic response JObject Parse responseText string
  • cypress 中的条件语句

    我正在尝试在 cypress 上执行条件语句 以检查标题中的登录链接是否为 登录 或 帐户 或 类 然后单击它 if 条件不起作用 cy get header then header gt if header find Sign in le
  • 错误:文件路径太长

    我正在尝试使用 C 中的各种文件函数 例如File GetLastWriteTime 对放置在大于 Windows 7 上允许的最大路径 即 260 的路径上的文件执行复制命令 它在长路径名上给我一个错误 在 MSDN 支持上 我他们要求使
  • 我可以将 R8G8B8A8 放入 UBO 中,并将其用作 vec4 吗?

    我尝试优化工作计算着色器 它的目的是创建一个图像 找到合适的颜色 使用一个小调色板 然后调用imageStore image ivec2 vec4 颜色在 UniformBuffer 的 uint 数组中进行索引 该 UBO 中的一种颜色封
  • 通过访问路由名称参数来自动化委托权限并检查用户的权限

    我已经为 ACL 层实现了委托角色 现在 我计划自动对每个请求进行权限检查 这样每次我就不必为用户角色编写权限 例如 我有公司资源 用户角色为 管理员 他只能查看公司 另一个用户角色为 超级 可以管理公司 在数据库中 我为他们提供了适当的权
  • Android操作栏自定义图标

    I want to create Action Bar like this 我在开发指南中看到操作栏图标应该具有特定的大小 是否可以 是否可以在操作栏中添加没有可点击指示的项目 我理解您对操作栏图标大小的担忧 我也有同样的担忧 直到我发现这
  • 如何将 ezComponents 与 magento 集成

    在 本机 Zend Framework 应用程序中 我将通过将 ezComponents 的自动加载器添加到 Zends 自动加载器来启用 ezComponents autoLoader Zend Loader Autoloader get