unclecheese / silverstripe-serialised-dbfields
Provides serialised data (YAML, JSON) in text fields that are traverseable as nested ViewableData objects.
Installs: 6 088
Dependents: 1
Suggesters: 0
Security: 0
Stars: 10
Watchers: 3
Forks: 4
Open Issues: 2
Type:silverstripe-module
Requires
- silverstripe/framework: ~3.1
- symfony/yaml: ^3
Suggests
- nathancox/codeeditorfield: Provides a robust code editor for editing your serialised data in the CMS
This package is auto-updated.
Last update: 2024-11-29 05:03:25 UTC
README
Provides serialised data (YAML, JSON) in text fields that are traverseable as nested ViewableData objects.
Installation
composer require unclecheese/silverstripe-serialised-dbfields
Recommended add-ons
If you plan on editing the serialised data in the CMS, you'll probably want to install CodeEditorField.
composer require nathancox/codeeditorfield
The database fields are set up to automatically scaffold CodeEditorField
when available.
Usage
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 %>
Casting
By default, all scalar values fall back on the $default_cast
setting of ViewableData
(Text). To customise the casting, use the |
symbol in your field value.
Price: Currency|20.00 StartDate: Date|2016-01-01
Tests
framework/sake dev/tests/SerialisedDBFeildsTest
Troubleshooting
Ring Uncle Cheese.