tbondois / odoo-ripcord
Ripoo : Odoo外部API的PHP7 XML-RPC客户端处理器
1.7.0
2021-08-21 11:23 UTC
Requires
- php: >=7.0
- ext-xmlrpc: *
- darkaonline/ripcord: ^0.1.6
Requires (Dev)
README
Ripoo是针对Odoo的PHP7 XML-RPC客户端处理器。
从robroypt/odoo-client分支而来,后者使用darkaonline/ripcord,Ripoo是符合PSR规范的ripcord
版本,后者是PHP在Odoo外部API文档中使用的库。
支持的版本
此库应与所有版本的Odoo兼容,至少从8.0到14.0,包括社区版和企业版。我仅亲自测试了11.0版本,但它们的API相同。它可以在所有PHP框架中使用,如Symfony、Laravel或Magento2。如果您发现任何不兼容性,请创建问题或提交拉取请求。
变更日志
安装
composer require tbondois/odoo-ripcord
更新
- 要更新composer.json中包含的所有库
composer update
- 但如果只想更新此库
composer update tbondois/odoo-ripcord
添加 --with-dependencies
以更新此库依赖的其他库。
使用
- 通过实例本身创建新的客户端
use Ripoo\OdooClient; $host = 'example.odoo.com:8080'; $db = 'example-database'; $user = 'user@email.com'; $password = 'yourpassword'; $client = new OdooClient($host, $db, $user, $password);
- 或者您可以通过ClientFactory创建新的客户端,以集中配置并使用良好的设计模式。
为Magento2的基本示例
class RipooClientProvider { private $clientFactory; private $client; private $scopeConfig; function __construct( \Ripoo\OdooClientFactory $clientFactory, \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig ) { $this->clientFactory = $clientFactory; $this->scopeConfig = $scopeConfig; } public function createClient() : \Ripoo\OdooClient { // TODO secure injections $odooUrl = $this->scopeConfig->getValue('my/settings/odoo_url'); $odooDb = $this->scopeConfig->getValue('my/settings/odoo_database'); $odooUser = $this->scopeConfig->getValue('my/settings/odoo_user'); $odooPwd = $this->scopeConfig->getValue('my/settings/odoo_pwd'); $this->client = $this->clientFactory->create( $host, $odooDb, $odooUser, $odooPwd ); return $this->client; } public function getClient() : \Ripoo\OdooClient { // You can force nenewing a Client based on createdAt if (!$this->client) { $this->client = $this->createClient(); } return $this->client; } }
为了使客户端正常工作,您必须排除URL中的http://
和/xmlrpc/2
部分。如果您想使用其他Odoo API,请将其放在构造函数的第五个可选参数中。
xmlrpc/2/common端点
获取版本信息
$client->version();
没有登录/认证方法。客户端为您进行认证,这就是为什么凭证作为构造函数参数传递的原因。
xmlrpc/2/object端点
搜索记录
$criteria = [ ['customer', '=', true], ]; $offset = 0; $limit = 10; $client->search('res.partner', $criteria, $offset, $limit);
搜索并计数记录。
$criteria = [ ['customer', '=', true], ]; $client->search_count('res.partner', $criteria);
读取记录
$ids = $client->search('res.partner', [['customer', '=', true]], 0, 10); $fields = ['name', 'email', 'customer']; $customers = $client->read('res.partner', $ids, $fields);
搜索和读取记录
$criteria = [ ['customer', '=', true], ]; $fields = ['name', 'email', 'customer']; $customers = $client->search_read('res.partner', $criteria, $fields, 10);
创建记录
$data = [ 'name' => 'John Doe', 'email' => 'foo@bar.com', ]; $id = $client->create('res.partner', $data);
更新记录
// change email address of user with current email address foo@bar.com $ids = $client->search('res.partner', [['email', '=', 'foo@bar.com']], 0, 1); $client->write('res.partner', $ids, ['email' => 'baz@quux.com']); // 'uncustomer' the first 10 customers $ids = $client->search('res.partner', [['customer', '=', true]], 0, 10); $client->write('res.partner', $ids, ['customer' => false]);
删除记录
$ids = $client->search('res.partner', [['email', '=', 'baz@quuz.com']], 0, 1); $client->unlink('res.partner', $ids);
如何知道模型名称
- 模型
ir.models
将返回可访问的模型列表。 - 您还可以使用
erppeek
sudo pip install -U erppeek
erppeek --server=http://odoo.example.com -d your_db -u admin -p password
your_db >>> models()
许可协议
MIT许可协议。版权所有 (c) 2018 Thomas Bondois。 查看LICENSE文件。