tbondois/odoo-ripcord

Ripoo : Odoo外部API的PHP7 XML-RPC客户端处理器

1.7.0 2021-08-21 11:23 UTC

This package is auto-updated.

Last update: 2024-09-21 17:46:43 UTC


README

Ripoo是针对Odoo的PHP7 XML-RPC客户端处理器。

robroypt/odoo-client分支而来,后者使用darkaonline/ripcord,Ripoo是符合PSR规范的ripcord版本,后者是PHP在Odoo外部API文档中使用的库。

此库位于GitHubPackagist

支持的版本

此库应与所有版本的Odoo兼容,至少从8.0到14.0,包括社区版和企业版。我仅亲自测试了11.0版本,但它们的API相同。它可以在所有PHP框架中使用,如Symfony、Laravel或Magento2。如果您发现任何不兼容性,请创建问题或提交拉取请求。

变更日志

查看CHANGELOG.md

安装

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文件