/ / Jakie są prawidłowe parametry tworzenia atrybutu produktu Magento w Perlu - perl, magento, xml-rpc

Jakie są prawidłowe parametry do tworzenia atrybutów produktu Magento w Perlu - perl, magento, xml-rpc

Mam już kilka połączeń, ale dla mnie nie mogę się dowiedzieć, jak to zrobić product_attribute.create praca. Zawsze dostaję 102 Invalid request parameters lub 623 Wrong Method Signature.

nawiązanie połączenia w ten sposób my $res = $self->_useragent->call( call => $self->_session, @{$payload} ); (uwaga: useragent to a XML :: RPC obiekt.

To Dumper $payload;

 $VAR1 = [
"product_attribute.create",
[
"test",
{
"frontend_label" => [
{
"label" => "Test ME",
"store_id" => 0
}
],
"scope" => "store",
"frontend_input" => "text"
}
]
];

Przeczytałem Dokumentacja API ale określenie, jak powinno wyglądać połączenie w Perlu, jest trudne.

Odpowiedzi:

1 dla odpowiedzi № 1

Nie znam biblioteki XML-RPC, której używasz w perlu, ale błąd, który widzisz, jest wyjątkiem Magento API, skonfigurowanym w

<!--File: app/code/core/Mage/Catalog/etc/api.xml -->
<!-- ... -->
<invalid_parameters>
<code>102</code>
<message>Invalid request parameters.</message>
</invalid_parameters>
<!-- ... -->

Używając nazwy wyjątku, możesz znaleźć miejsce, w które Magento ją rzucił

#File: app/code/core/Mage/Catalog/Model/Product/Attribute/Api.php
//...
if (empty($data["attribute_code"]) || !is_array($data["frontend_label"])) {
$this->_fault("invalid_parameters");
}
//...

Więc zgaduję, że twoje połączenie jest poprawne, po prostu brakuje ci attribute_code.


0 dla odpowiedzi nr 2

Po przekopaniu kodu Magento skopiowałem go z zestawu testów i przekonwertowałem na perl, wydaje się działać. Może wszystkie atrybuty są wymagane.

$VAR1 = [
"product_attribute.create",
[
{
"default_value" => "1",
"is_configurable" => 0,
"used_in_product_listing" => 0,
"is_visible_on_front" => 0,
"apply_to" => [
"simple"
],
"is_comparable" => 0,
"is_used_for_promo_rules" => 0,
"is_required" => 0,
"scope" => "store",
"is_unique" => 0,
"frontend_input" => "text",
"is_searchable" => 0,
"attribute_code" => "unique_code",
"is_visible_in_advanced_search" => 0,
"frontend_label" => [
{
"label" => "some label",
"store_id" => "0"
}
]
}
]
];

Dalsze eksperymenty w pewnym stopniu oparte na Odpowiedź Alana Stormazasugeruj, że wymagane są następujące pola, ponieważ nie udało mi się pomyślnie utworzyć żądania bez zdefiniowania wszystkich tych pól.

 $VAR1 = [
"product_attribute.create",
[
{
"frontend_input" => "text",
"attribute_code" => "test1374438470",
"frontend_label" => [
{
"store_id" => 0,
"label" => "Test ME"
}
]
}
]
];