现在为此工作了一个星期.无法执行此代码.我想通过SOAP检索数据并在PHP中使用它.我的麻烦是,我在发送'RequesterCredentials'时遇到了麻烦.
我将显示xml代码,以便您可以看到我要发送的信息,然后是我正在使用的PHP代码.
XML示例代码
POST /AuctionService.asmx HTTP/1.1
Host: apiv2.gunbroker.com
Content-Type: text/xml; charset=utf-8
Content-Length: 200
SOAPAction: "GunBrokerAPI_V2/GetItem"
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<RequesterCredentials xmlns="GunBrokerAPI_V2">
<DevKey>devkey</DevKey>
<AppKey>appkey</AppKey>
</RequesterCredentials>
</soap:Header>
<soap:Body>
<GetItem xmlns="GunBrokerAPI_V2">
<GetItemRequest>
<ItemID>312007942</ItemID>
<ItemDetail>Std</ItemDetail>
</GetItemRequest>
</GetItem>
Run Code Online (Sandbox Code Playgroud)
PHP代码,我用来打电话
$client = new SoapClient("http://apiv2.gunbroker.com/AuctionService.asmx?WSDL");
$appkey = 'XXXXXX-XXXXXX-XXXXXX';
$devkey = 'XXXXXX-XXXXXX-XXXXXX';
$header = new SoapHeader('GunBrokerAPI_V2','RequesterCredentials',array('DevKey' => $devkey,'AppKey' => $appkey),0);
$client->__setSoapHeaders(array($header));
$result = $client->GetItem('312343077');
echo '<pre>',print_r($result,true),'</pre>';
Run Code Online (Sandbox Code Playgroud)
结果我得到了
stdClass Object
(
[GetItemResult] => stdClass Object
(
[Timestamp] => 2012-11-07T18:17:31.9032903-05:00
[Ack] => Failure
[Errors] => stdClass Object
(
[ShortMessage] …Run Code Online (Sandbox Code Playgroud) 我为Magento 1.8开发了一个自定义模块,它可以正常工作,我现在正在将其改装为Magento 1.4.
在catalog_product_attribute/edit选项卡中,我使用观察者向表单添加字段,以便人们可以在创建或更新属性时从其他选项中进行选择.在我的安装脚本中,列is_grouped_product_filter被添加到catalog_eav_attribute表中,它确实存在.
正如我在1.8中所做的那样,在1.4中我去Mage_Adminhtml_Catalog_Product_AttributeController了saveAction()以确保我的新字段被包含在数据数组中以保存到数据库中,事实上确实如此.
它只是不会将值保存到1.4中的自定义列.但是,在我正在处理的1.4到1.8版本之间,看起来saveAction()是相同的.
我还尝试在保存操作中手动添加我的数据,看看它是否做了什么,但事实并非如此.我使用以下方法手动将数据添加到数据阵列:
$data['is_grouped_product_filter'] = 1;
Run Code Online (Sandbox Code Playgroud)
我是否在1.4中缺少一些额外的步骤以允许我将值保存到数据库中?
我编写了一个长脚本,完全符合我的需要,但现在我发现函数的用处,所以我可以在其他脚本中使用它们.
我的脚本完全按照我最初编写的方式工作,并且与我实现我创建的函数的方式完美配合.
因为我是编写函数的新手,我从来没有看到过按照我的方式实现的,我不知道它是否是好的形式.
foreach($get_prefixes as $prefix) {
if($prefix['type'] == 'pre') {
$sql = "SHOW COLUMNS FROM `$prefix[table]` LIKE 'sku_%' ";
$sku_cols = $objDb->query($sql);
foreach($sku_cols as $col) {
echo $col['Field'] . '<br>';
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后就是我用创建的函数做的方式.它再次完美,但有一种"适当"的方式来做到这一点?
function getSku_($table) {
global $objDb;
$sql = "SHOW COLUMNS FROM `$table` LIKE 'sku_%' ";
$sku_cols = $objDb->query($sql);
return $sku_cols;
}
foreach($get_prefixes as $prefix) {
if($prefix['type'] == 'pre') {
foreach(getSku_($prefix['table']) as $col) {
echo $col['Field'] . '<br>';
}
}
}
Run Code Online (Sandbox Code Playgroud)