2017-01-03 11 views
1

Я пытаюсь получить некоторые данные от Odoo через XMLRPC, и я работаю с PHP и его библиотекой Ripcord (рекомендуется по https://www.odoo.com/documentation/8.0/api_integration.html).Как использовать библиотеку Ripcord PHP7 для получения данных Odoo?

Итак, я следую инструкциям на этой странице.

Во-первых, я загрузил файлы Ripcord с https://github.com/poef/ripcord.git. Я сохранил их в папке с именем ripcord, расположенной в каталоге индекса моей PHP-страницы.

Во-вторых, я включил расширения OpenSSL и XMLRPC для PHP7. Я думаю, что я сделал это хорошо, потому что если я выполняю следующее предложение:

$modules = get_loaded_extensions(); 
foreach ($modules as $module) { 
    echo $module.', '; 
} 

Я получаю этот результат:

ядро, дата, LibXML, OpenSSL, PCRE, Zlib, фильтр, хэш, Reflection, SPL, session, standard, apache2handler, mysqlnd, PDO, xml, calendar, ctype, curl, dom, mbstring, fileinfo, ftp, gd, gettext, iconv, json, exif, mcrypt, mysqli, pdo_mysql, Phar , posix, readline, shmop, SimpleXML, сокеты, sysvmsg, sysvsem, sysvshm, tokenizer, wddx, XmlReader, XMLRPC, XmlWriter, XSL, Zend OPcache,

Теперь это код моего index.php:

$url = 'http://localhost:30080'; 
$db = 'db_v80_test_01'; 
$username = 'admin'; 
$password = 'adminpwd'; 

require_once('ripcord/ripcord.php'); 

// $info = ripcord::client($url)->start(); 
// list($url, $db, $username, $password) = array($info['host'], $info['database'], $info['user'], $info['password']); 

$common = ripcord::client($url.'/xmlrpc/2/common'); 

$uid = $common->authenticate($db, $username, $password, array()); 
die($uid); 

Проблема заключается в том, что я не подвожу ничего в $uid переменной , Может ли кто-нибудь сказать мне, что происходит?

ПРИМЕЧАНИЕ

Может быть этот вопрос дублируется: Odoo API web service doesn't return anything

Но поскольку у него не было никаких ответов, я попытался дать более подробную информацию о шахте.

ответ

0

Хорошо, у меня не было журнала ошибок в php.ini, поэтому я всегда ничего не получаю. Если бы я включил его раньше, я бы заметил, что ошибка заключалась в том, что я пытался напечатать какое-то значение, которое я не могу напечатать, поэтому проблема была в команде die.

Теперь он прекрасно работает с этим кодом:

$url = 'http://localhost:30080'; 
$db = 'db_v80_test_01'; 
$username = 'admin'; 
$password = 'adminpwd'; 

require_once('ripcord/ripcord.php'); 

$common = ripcord::client($url.'/xmlrpc/2/common'); 
$uid = $common->authenticate($db, $username, $password, array()); 
$models = ripcord::client("$url/xmlrpc/2/object"); 
$partners = $models->execute_kw(
    $db, 
    $uid, 
    $password, 
    'res.partner', 
    'search', 
    array(
     array(
      array('is_company', '=', true), 
      array('customer', '=', true) 
     ) 
    ) 
); 

echo('RESULT:<br/>'); 
foreach ($partners as $partner) { 
    echo $partner.'<br/>'; 
}