1. Go to this page and download the library: Download fiedsch/contao-jsonwidget library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
fiedsch / contao-jsonwidget example snippets
$GLOBALS['TL_DCA']['tl_member']['fields']['json_data'] = [
'inputType' => 'jsonWidget',
'label' => &$GLOBALS['TL_LANG']['tl_member']['json_data'],
'eval' => ['tl_class' => 'long', 'decodeEntities' => true],
'sql' => "blob NULL",
];
// Add json_data to $GLOBALS['TL_DCA']['tl_member']['palettes']['default']
// where ever you like
// models/ExtendedMemberModel.php
namespace Contao;
use Fiedsch\JsonWidgetBundle\Traits\JsonGetterSetterTrait;
class ExtendedMemberModel extends MemberModel
{
// let __set() and __get() take care of the JSON or YAML data (both at the same time will not work!)
use JsonGetterSetterTrait;
// or (see above!)
use YamlGetterSetterTrait;
/**
* The column name we selected for the `jsonWidget` in the example above
* @var string
*/
protected static $strJsonColumn = 'my_json_data_column';
/**
* Same thing for the `yamlWidget`
* @var string
*/
protected static $strYamlColumn = 'my_yaml_data_column';
}
$member = \ExtendedMemberModel::findById(42);
// access fields columns created by contao's default DCA
printf("read member %s %s\n", $member->firstname, $member->lastname);
// access a field stored in our JSON data column
printf("transparently accessing a field from the JSON data ... '%s'\n", $member->whatever);
// set values and store in database
$member->a_key_for_a_scalar_value = "fourtytwo";
$member->key_for_an_array = ['an','array','containing','some','strings'];
$member->save(); // Note that saving will lose comments in your YAML-data
// as Symfony\Component\Yaml\Yaml will not save them
'eval' => [ /* ... , */ 'rte'=>'ace|yaml'],
# In this example we assume $strJsonColumn = 'json_data';
$data = [ 'foo' => 1, 'bar' => 'baz ];
$model->json_data = $data; # will throw an exception