juanparati/podium

一个现代的PHP库,用于与Podium兼容,支持Laravel

1.2.0 2023-06-08 08:26 UTC

This package is auto-updated.

Last update: 2024-09-08 11:29:12 UTC


README

一个与现代Podio API客户端兼容的Laravel。

安装

composer require juanparati/podium

Laravel配置

此库与Laravel兼容。以下命令将部署配置文件

artisan vendor:publish --provider="Juanparati\Podium\Providers\PodiumProvider"

如何使用它?

客户端实例和身份验证

$client = new \Juanparati\Podium\Podium(
        session: '12346',
        clientId: 'myClientId',
        clientSecret: 'myClientSecret'
);

$client->authenticate(
    new \Juanparati\Podium\Auths\AppAuth(
        appId: '987654',      
        appToken: 'myAppToken'
    )
);

请求单个项目

$item = (new \Juanparati\Podium\Requests\ItemRequest($client))->get(itemId: 11111111);

请求应用中的所有项目

$models = (new \Juanparati\Podium\Requests\ItemRequest($client))->filter(appId: 987654);

或者使用自定义选项

$models =  (new \Juanparati\Podium\Models\ItemFilterModel([], $client))           
        ->setSortBy('last_edit_on')
        ->setSortDesc(true)
        ->setLimit(5);

读取所有项目。注意,items()方法是一个生成器,它会自动请求额外的页面。

$itemNum = 0;

foreach ($models->items() as $item) {
    print_r($item->originalValues())
    
    // The setLimit options indicate the limit of items per page to the request,
    // but the generator will automatically request the next page.
    // In order to limit the number of results we should manually limit the results.
    if ($itemNum === 10)
        break;
        
    $itemNum++;   
}

读取项目值。

此库提供了两种读取项目值的方法。

  1. 使用originalValues方法获取原始值
$item->originalValues();
  1. 使用decodeValue方法获取简化值
$item->decodeValue();

两种值都会遍历所有值的树,但您可以引用特定的值。

// Accessing to the fields
$item->fields->decodeValue();

或者

// Accessing to specific values
$item->fields->title;
$item->fields->{'my-custom-field'};

保存项目

⚠️ 注意:保存项目仍是一个实验性功能。请自行承担使用此功能的风险。

可以保存/更新项目。

// Accessing to specific values
$item->fields->title = "My new title";
$item->save(silent: false, hook: true); // Will perform silent update calling the bounded hooks 

插入新项目

⚠️ 注意:保存项目仍是一个实验性功能。请自行承担使用此功能的风险。

$attr = [
    'title' => 'My new title'
    'revenue' => ['currency' => 'DKK', 'value' => 123.34];
];

(new \Juanparati\Podium\Requests\ItemRequest($client))->create(
    appId: 987654,
    attr: $attr,
    silent: false,
    hook: false
);

使用不同的字段键

可以使用以下格式检索字段键

  • external_id(默认)。
  • external_id(蛇形格式)。
  • field_id。

例如,有时检索字段键的蛇形格式非常合适,这使得操作变得最容易。

$item = (new \Juanparati\Podium\Requests\ItemRequest($client))->get(itemId: 11111111);
echo $item->fields->{'my-long-named-field'};

$item->setOptions([
    \Juanparati\Podium\Models\ItemFieldModel::class => [
        \Juanparati\Podium\Models\ItemFieldModel::OPTION_KEY_AS => \Juanparati\Podium\Models\ItemFieldModel::KEY_AS_SNAKECASE,
    ]
);

echo $item->fields->my_long_named_field;

$item->setOptions([
    \Juanparati\Podium\Models\ItemFieldModel::class => [
        \Juanparati\Podium\Models\ItemFieldModel::OPTION_KEY_AS => \Juanparati\Podium\Models\ItemFieldModel::KEY_AS_FIELD_ID,
    ]
);

echo $item->fields->{'12345567'};

将日期和日期时间转换为不同的时区和格式

$item = (new \Juanparati\Podium\Requests\ItemRequest($client))->get(itemId: 11111111);

$item->setOptions([
    \Juanparati\Podium\Models\ItemFieldModel::class => [
        \Juanparati\Podium\Models\ItemFields\DateItemField::class => [
            \Juanparati\Podium\Models\ItemFields\DateItemField::OPTION_TIMEZONE => 'Europe/Copenhagen',
            \Juanparati\Podium\Models\ItemFields\DateItemField::OPTION_FORMAT => \Juanparati\Podium\Models\ItemFields\DateItemField::FORMAT_TIMESTAMP
        ]
    ]
);