Magento、SoapClient 和本地 WSDL

问题描述 投票:0回答:4

这可能是一个新手捂脸的问题,但我无法弄清楚。 我正在使用 Magento 商店的 Web 服务(即 Magento 商店中的代码正在访问远程 Web 服务)。 在这种情况下,我有一个需要引用的本地 WSDL 文件。 我在使用 WSDL 文件的远程 URL 之前已经完成了此操作,效果很好。 但是,对于本地文件,我不知道如何引用它。 我通过将文件放入站点根目录的 wsdl 子目录中来使其工作,然后我可以使用 http://mysite/wsdl/thefile.wsdl 引用它。 但是,我更喜欢使用相对路径来引用它(主要是因为我计划将相同的代码部署到不同的站点,并且我希望对所有站点使用相同的代码)。

我想我的问题归结为:当您像这样实例化 PHP 的 SoapClient 实例时,它在哪里寻找

thefile.wsdl
? 我认为它对于实例化 SoapClient 的 PHP 文件来说是本地的,但是当我将文件放在同一文件夹中时它不起作用。 我尝试了 /includes 目录以及 app/code/local 我确信这对于经验丰富的程序员来说是理所当然的事情,但有时基础知识会暗示我......

php magento soap magento-soap-api
4个回答
3
投票

我没有意识到,由于Magento的设计,所有页面的“根”是/index.php。 每个页面都是从该页面加载的,所以当然它是根页面。 当您尝试实例化 SoapClient 时,它会在

main root

脚本文件的目录中查找,而不是当前的模块/类文件。 我可以将 WSDL 文件放在网络服务器的根目录中并成功加载它们(我想我以前没有尝试过......)。 我现在所做的是将它们移动到 /media 目录,然后使用

$client = new SoapClient("thefile.wsdl")

获取媒体目录来调用它们,附加我的子目录路径和 VIOLA!

    


2
投票


0
投票

更多关于 Magento Soap api

这里

更新1

如果服务位于另一台主机上,那么您应该能够以与 magento 服务消费相同的方式进行消费。

查看此

链接

关于 zend 的 fm


0
投票

我建议您将该文件存储在自定义模块的

getBaseDir('media')

目录中。示例代码:


etc

	
© www.soinside.com 2019 - 2024. All rights reserved.