【问题标题】:Create a new DropDown (select) product attribute (with options) in magento via SOAP API v1通过 SOAP API v1 在 magento 中创建一个新的 DropDown(选择)产品属性(带有选项)
【发布时间】:2015-09-20 12:29:06
【问题描述】:

我正在尝试创建一个用于可配置产品的全局产品属性。

这就是我使用管理后端的方式:

使用以下选项(例如):

所以,我尝试像这样使用 SOAP API (v1) 完成上述操作:

$client = new SoapClient('http://domain.com/api/soap?wsdl');
$session = $client->login('apiUser', 'apiPass');

$attributeData = [
    'attribute_code' => 'test',
    'scope' => 'global',
    'frontend_input' => 'select',
    'options' => [
        'values' => [
            0 => 'Red',
            1 => 'Green',
            2 => 'Blue'
        ]
    ],
    'default_value' => '',
    'is_configurable' => 1,
    'used_in_product_listing' => 1,
    'is_visible_on_front' => 0,
    'apply_to' => '',
    'is_comparable' => 0,
    'is_used_for_promo_rules' => 0,
    'is_required' => 0,
    'is_unique' => 0,
    'is_searchable' => 0,
    'is_visible_in_advanced_search' => 0,
    'frontend_label' => [[
        'store_id' => 0,
        'label' => 'Test'
    ]]
];

try
{
    $result = $client->call($session, 'product_attribute.create', $attributeData);
    var_dump($result);
}
catch (SoapFault $sf)
{
    var_dump($sf);
}

$client->endSession($session);

当我执行这个脚本时,我得到以下错误:

请求参数无效。

有什么想法我在这里做错了吗?

【问题讨论】:

    标签: php magento soap


    【解决方案1】:

    这里是示例代码。你可以试试。

    <?php
    
    $user = 'user';
    $password = '123456789';
    
    $client = new SoapClient('http://domain.com/api/soap/?wsdl');
    
    $session = $client->login($user, $password);
    
    // Create new attribute
    $attributeToCreate = array(
        "attribute_code" => "test_attribute",
        "scope" => "global",
        "frontend_input" => "select",
        "is_unique" => 0,
        "is_required" => 0,
        "is_configurable" => 1,
        "is_searchable" => 0,
        "is_visible_in_advanced_search" => 0,
        "used_in_product_listing" => 0,
        "additional_fields" => array(
            "is_filterable" => 1,
            "is_filterable_in_search" => 1,
            "position" => 1,
            "used_for_sort_by" => 1
        ),
        "frontend_label" => array(
            array(
                "store_id" => 0,
                "label" => "A test attribute"
            )
        )
    );
    $attributeId = $client->call(
        $session,
        "product_attribute.create",
        array(
            $attributeToCreate
        )
    );
    
    // add options
    $attributeCode = $attributeToCreate['attribute_code'];
    $selectOptions = array('Value 1','Value 2','Value 3','Value 4');
    foreach ($selectOptions as $opt) {
        $client->call(
            $session,
            "product_attribute.addOption",
            array(
                 $attributeCode,
                 array(
                    "label" => array(
                        array(
                            "store_id" => 0,
                            "value" => $opt
                        )
                    ),
                    "order" => 0,
                    "is_default" => 0
                )
            )
        );
    }
    
    // add attribute to a attribute set
    $setId = 4; //attribute set id
    $result = $client->call(
        $session,
        "product_attribute_set.attributeAdd",
        array(
             $attributeId, // created attribute id
             $setId
        )
    );
    
    var_dump($attributeId);
    
    $client->endSession($session);
    
    ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-16
      • 1970-01-01
      • 2021-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-17
      相关资源
      最近更新 更多