unclecheese/silverstripe-serialised-dbfields

提供可遍历为嵌套 ViewableData 对象的文本字段中的序列化数据(YAML、JSON)。

dev-master 2019-02-18 20:44 UTC

This package is auto-updated.

Last update: 2024-08-29 04:19:53 UTC


README

提供可遍历为嵌套 ViewableData 对象的文本字段中的序列化数据(YAML、JSON)。

安装

composer require unclecheese/silverstripe-serialised-dbfields

推荐附加组件

如果您计划在 CMS 中编辑序列化数据,您可能需要安装 CodeEditorField

composer require nathancox/codeeditorfield

数据库字段已设置为在可用时自动搭建 CodeEditorField

使用方法

mysite/code/MyPageType.php

class MyPageType extends Page {
  
  private static $db = [
    'MyJSONData' => 'JSONField',
    'MyYAMLData' => 'YAMLField'
  ];
  
  public function getCMSFields()
  {
    $fields = parent::getCMSFields();
    $fields->addFieldToTab('Root.JSONData', CodeEditorField::create('MyJSONData')
      ->setMode('json')
    );
    $fields->addFieldToTab('Root.YAMLData', CodeEditorField::create('MyYAMLData')
      ->setMode('yaml')
    );
    
    return $fields;
  }
}

$MyJSONData

{
  "Category": "Lollies",
  "BannerImage": "/path/to/image.png",
  "Products": [
    {
      "Title": "Snake",
      "Colour": "Red"
    },
    {
      "Title": "Jet plane",
      "Colour": "Purple"
    }
  ]
}

themes/mytheme/templates/Layout/MyPageType.ss

<% with $MyJSONData %>
  Category: $Category<br>
  <img src="$BannerImage"><br>
  <ul>
  $Products.count total products
  <% loop $Products %>
  	<li>$Title ($Colour)</li>
  <% end_loop %>
  </ul>
<% end_with %>

转换

默认情况下,所有标量值都将回退到 ViewableData(文本)的 $default_cast 设置。要自定义转换,请在字段值中使用 | 符号。

Price: Currency|20.00
StartDate: Date|2016-01-01

测试

framework/sake dev/tests/SerialisedDBFeildsTest

故障排除

联系 Uncle Cheese。