如何使用PHP7 Ripcord库获取Odoo数据?

时间:2017-01-03 10:08:47

标签: php odoo-8 xml-rpc php-7 ripcord

我试图通过XMLRPC从Odoo获取一些数据,我正在使用PHP及其Ripcord库(推荐在https://www.odoo.com/documentation/8.0/api_integration.html上)。

所以我按照该页面上的步骤进行操作。

首先,我从https://github.com/poef/ripcord.git下载了Ripcord文件。我将它们保存在名为 ripcord 的文件夹中,该文件夹位于我的PHP页面的索引目录中。

其次,我为PHP7启用了OpenSSL和XMLRPC扩展。我想我做得很好,因为如果我执行下一句话:

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

我得到了这个结果:

  

Core,date,libxml, openssl ,pcre,zlib,filter,hash,Reflection,   SPL,会话,标准,apache2handler,mysqlnd,PDO,xml,日历,   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

但由于没有答案,我试图提供更多有关我的信息。

1 个答案:

答案 0 :(得分:1)

好的,我没有在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/>';
}
相关问题