Я хочу добавить x клиентов в Prestashop через код, но с дополнительными полями - PullRequest
3 голосов
/ 24 мая 2019

Я пытаюсь добавить клиентов с помощью кода, но PrestaShop дает мне ошибку.Я использую PHP и XML

$XMLRQString = '<?xml version="1.0" encoding="utf-8"?>'.
    '<x:Winmax4GetEntitiesRQ xmlns:x="urn:Winmax4GetEntitiesRQ">'.
                    '</x:Winmax4GetEntitiesRQ >';
                    $Params=array(
                    'CompanyCode'=>'',
                    'UserLogin'=>'',
                    'UserPassword'=>'',
                    'Winmax4GetEntitiesRQXML'=> $XMLRQString
                    );
                    $return = $client->GetEntities($Params);
                    $XMLRSString = new SimpleXMLElement($return->GetEntitiesResult);

foreach ($XMLRSString->Entities->Entity as $entity)
{   
    $default_lang= Configuration::get('PS_LANG_DEFAULT');

    $customer=new Customer();

    $customer->email= $entity->Email;

    $customer->lastname= $entity->EntityType;

    $customer->firstname= [$default_lang => $entity->Name];

    $customer->contribuinte= $entity->TaxPayerID;

    $customer->passwd= $entity->TaxPayerID;

    $customer->active = 1;

    $customer->add();
}

ОШИБКА: (1/1) ContextErrorException Предупреждение: preg_match () ожидает, что параметр 2 будет строкой, а массив задан

в строке Validate.php172

в ValidateCore :: isCustomerName (массив (объект (SimpleXMLElement)))) в строке ObjectModel.php 1149

в ObjectModelCore-> validateField ('firstname', массив (объект (SimpleXMLElement))) в строке ObjectModel.php 981

в ObjectModelCore-> validateFields () в строке ObjectModel.php 284

в ObjectModelCore-> getFields () в строке ObjectModel.php 551

в ObjectModelCore-> add (true, true) в строке Customer.php 264

в CustomerCore-> add () в строке create_clients.php 66

1 Ответ

2 голосов
/ 27 мая 2019

При сохранении значений из SimpleXML, если вы просто ссылаетесь на сам элемент по имени тега - это будет экземпляр SimpleXMLElement.Если вам нужно фактическое содержимое элемента, самый простой способ сделать это - привести его к строке ...

$customer->firstname= (string)$entity->Name;
...