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

for*_*vas 5 php xml-rpc odoo odoo-8 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.', ';
}
Run Code Online (Sandbox Code Playgroud)

我得到这个结果:

核心、日期、libxml、openssl、pcre、zlib、过滤器、哈希、反射、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、分词器、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);
Run Code Online (Sandbox Code Playgroud)

问题是我没有得到任何$uid变量。谁能告诉我发生了什么事吗?

笔记

可能这个问题是重复的:Odoo API Web 服务不返回任何内容

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

for*_*vas 5

好吧,我没有在 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/>';
}
Run Code Online (Sandbox Code Playgroud)