【问题标题】:Podio API: how to set a value for an empty field with podio-php wrapper?Podio API:如何使用 podio-php 包装器为空字段设置值?
【发布时间】:2017-02-01 14:27:06
【问题描述】:

我正在尝试使用podio-php 通过 API 设置字段值。如果该字段已经非空,则根据the manual 制作的以下 sn-p 可以正常工作:

$item = PodioItem::get_basic( $item_id );    
$field = $item->fields["field-name"];
$field->values = "2"; // let's say we have a number filed
$item->save(); // $field->save() also works

但如果该字段为,则保存时会出现警告Creating default object from empty value。没有错误,项目没有变化。这适用于不同类型的字段。我认为应该从头开始创建一个字段对象,但没有设法找到有关不同字段类型的信息。

那么,当字段为空时,如何正确设置 podio-php 的值?谢谢。

【问题讨论】:

    标签: php podio


    【解决方案1】:

    我遇到了同样的问题并找到了这个宝石..

    PodioItem::update(210606, array('fields' => array(
    "title" => "The API documentation is much more funny",
    "business_value" => array('value' => 20000, "currency" => "EUR"),
    "due_date" => array('start' => "2011-05-06 11:27:20", "end" => "2012-04-30 
    10:44:20"),
    ));
    

    我对其进行了修改,以便可以更新各个字段。但这将更新该字段而不会出现那个愚蠢的错误。

    $FieldsArray = [];
    $FieldsArray['encounter-status'] = "Draft";
    $item = PodioItem::update($itemID, array('fields' => $FieldsArray));
    

    【讨论】:

      【解决方案2】:

      可能有更简单的方法,但这是我找到的解决方法。如果该字段不为空,我们只需分配新值。但是如果字段为空,我们需要创建一个与现有字段同名的对应类型的新字段对象(见下表),并将其添加到字段集合中。旧的空字段将被新字段替换。

      在本例中,我们将设置数字字段:

      $field_name = "field-name";
      $new_value = 999; 
      
      $item = PodioItem::get_basic( $item_id );
      $field = $item->fields[$field_name];
      
      if ( count($field->values) ){ // if the field is not empty
          $field->values = $new_value;
      } else { // if the field is empty
          $new_field = new PodioNumberItemField($field_name); // new field with the same(!) name
          $new_field->values = $new_value; 
          $item->fields[] = $new_field; // the new field will replace the exsisting (empty) one
      }
      
      $item->save();
      

      其他字段对象类型的构造函数(在models/PodioItemField.php 中找到):

      PodioTextItemField
      PodioEmbedItemField
      PodioLocationItemField
      PodioDateItemField
      PodioContactItemField
      PodioAppItemField
      PodioCategoryItemField
      PodioImageItemField
      PodioFileItemField
      PodioNumberItemField
      PodioProgressItemField
      PodioDurationItemField
      PodioCalculationItemField
      PodioMoneyItemField
      PodioPhoneItemField
      PodioEmailItemField
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-12-10
        • 1970-01-01
        • 2023-03-26
        • 1970-01-01
        • 1970-01-01
        • 2020-02-07
        相关资源
        最近更新 更多