如何使用PHP7 Ripcord库获取Odoo数据?
How to use PHP7 Ripcord library to get Odoo data?
我正在尝试通过 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, 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, sockets, 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
但由于没有答案,我尝试提供更多关于我的信息。
好的,我在 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/>';
}
我正在尝试通过 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, 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, sockets, 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
但由于没有答案,我尝试提供更多关于我的信息。
好的,我在 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/>';
}