这个函数应该创建一个xml文件,最终传递给控制器中的curl请求,最终达到一个会计api。传入静态XML文件时,curl请求正常工作。
此处的代码应基于正在创建的客户端生成动态xml文件。
出于任何原因,它返回一个空字符串。
某些字段允许为空。
任何想法都将不胜感激。
$writer = new XMLWriter($xmlString);
// Output directly to the user
$writer->openMemory();
$writer->openURI('php://output');
$writer->startDocument('1.0');
$writer->writeAttribute('encoding', 'utf-8');
$writer->startElement('request');
$writer->writeAttribute('method', 'client.create');
$writer->setIndent(true);
$writer->startElement('client');
//----------------------------------------------------
$writer->writeElement('first_name', $org->first_name);
$writer->writeElement('last_name', $org->last_name);
$writer->writeElement('organization', $org->name);
$writer->writeElement('email', $org->contact_email);
$writer->writeElement('username', $org->contact_name);
$writer->writeElement('password');
//----------------------------------------------------
$writer->startElement('contacts');
$writer->startElement('contact');
$writer->writeElement('username', $org->contact_name);
$writer->writeElement('first_name', $org->first_name);
$writer->writeElement('last_name', $org->last_name);
$writer->writeElement('email', $org->contact_email);
$writer->writeElement('phone1', $org->contact_phone);
$writer->writeElement('phone2');
// contact
$writer->endElement();
// End contacts
$writer->endElement();
//----------------------------------------------------
$writer->writeElement('work_phone', $org->contact_phone);
$writer->writeElement('home_phone', $org->contact_phone);
$writer->writeElement('mobile', $org->contact_phone);
$writer->writeElement('fax', $org->contact_phone);
$writer->writeElement('language', 'en');
$writer->writeElement('currency_code', 'USD');
$writer->writeElement('phone1', $org->contact_phone);
$writer->writeElement('notes');
// primary address
$writer->writeElement('p_street1');
$writer->writeElement('p_city');
$writer->writeElement('p_state');
$writer->writeElement('p_code');
// secondary address
$writer->writeElement('s_street1');
$writer->writeElement('s_city');
$writer->writeElement('s_state');
$writer->writeElement('s_code');
$writer->writeElement('vat_name');
$writer->writeElement('vat_number');
// End channel
$writer->endElement();
// End request
$writer->endElement();
$writer->endDocument();
$currentMemory = $writer->outputMemory();
$writer->flush();
return $currentMemory;
}
答案 0 :(得分:0)
我删除了这段代码:
$writer->openMemory();
并留在此代码段中:
openURI()
因为我将xml传递给控制器,
openMemory()
不是正确的方法,因为它旨在直接输出给用户。
scanf("%[^\n]%*c",string);
保存数据,然后在函数底部关闭,在我包含此文件后使其在我的控制器函数中可用。