「product_attribute.info」を使用してmagentoのAPIにアクセスしようとすると、次のように返されます:
致命的なエラー: キャッチされない SoapFault 例外: [3] API パスが無効です。で... 81行目
どこに戻っているreturn $proxy->call($sessionId, 'product_attribute.info', $attributeId);
$attributeId で指定された関数を置き換えても、このエラーは修正されます。サーバー上のファイルが破損していると思いますが、どのファイルが原因かわかりません。
感謝する
編集: 私の Api.php
class Mage_Catalog_Model_Product_Attribute_Api extends Mage_Catalog_Model_Api_Resource
{
public function __construct()
{
$this->_storeIdSessionField = 'product_store_id';
$this->_ignoredAttributeCodes[] = 'type_id';
$this->_ignoredAttributeTypes[] = 'gallery';
$this->_ignoredAttributeTypes[] = 'media_image';
}
public function items($setId)
{
$attributes = Mage::getModel('catalog/product')->getResource()
->loadAllAttributes()
->getSortedAttributes($setId);
$result = array();
foreach ($attributes as $attribute) {
/* @var $attribute Mage_Catalog_Model_Resource_Eav_Attribute */
if ( (!$attribute->getId() || $attribute->isInSet($setId))
&& $this->_isAllowedAttribute($attribute)) {
if (!$attribute->getId() || $attribute->isScopeGlobal()) {
$scope = 'global';
} elseif ($attribute->isScopeWebsite()) {
$scope = 'website';
} else {
$scope = 'store';
}
$result[] = array(
'attribute_id' => $attribute->getId(),
'code' => $attribute->getAttributeCode(),
'type' => $attribute->getFrontendInput(),
'required' => $attribute->getIsRequired(),
'scope' => $scope
);
}
}
return $result;
}
public function options($attributeId, $store = null)
{
$storeId = $this->_getStoreId($store);
$attribute = Mage::getModel('catalog/product')
->setStoreId($storeId)
->getResource()
->getAttribute($attributeId)
->setStoreId($storeId);
/* @var $attribute Mage_Catalog_Model_Entity_Attribute */
if (!$attribute) {
$this->_fault('not_exists');
}
$options = array();
if ($attribute->usesSource()) {
foreach ($attribute->getSource()->getAllOptions() as $optionId=>$optionValue) {
if (is_array($optionValue)) {
$options[] = $optionValue;
} else {
$options[] = array(
'value' => $optionId,
'label' => $optionValue
);
}
}
}
return $options;
}
}