On SS 4.0.3 only for DataObjects (has-many relation), the DB Localised_Live
table version isn't created during save on CMS-side. This result in NULL
content on the front-end page.
If I log as admin and inspect one of the pages involved (actually same for 3 distinct DataObjects) in draft mode, I see the contents regularly.
Here's a couple of screenshots:
Here's the code involved (just picking 1 of 3 - are the same):
DataObject
<?php
// Definizione Namespace
use SilverStripe\ORM\DataObject;
use SilverStripe\Forms\FieldList;
use SilverStripe\Assets\Folder;
use SilverStripe\Assets\Image;
use SilverStripe\Forms\RequiredFields;
use SilverStripe\Forms\TextField;
use SilverStripe\AssetAdmin\Forms\UploadField;
/**
* Classe Headline
*/
class Headline extends DataObject {
// Dichiarazione Proprietà
private static $db = [
'Corpo' => 'HTMLText'
];
private static $has_one = [
'LogoHeadline' => Image::class,
'Home' => 'Home'
];
private static $searchable_fields = [
'Corpo'
];
private static $summary_fields = [
'Corpo'
];
private static $translate = [
'Corpo'
];
/**
* Metogo definizione campi obbligatori
* Setter
* @return void
*/
public function getCMSValidator() {
return new RequiredFields(array('LogoHeadline'));
}
/**
* Metodo gestione campi CMS
* Setter
* @return FieldList $fields Campi Back-End
*/
public function getCMSfields()
{
$cartellaHome = 'home';
$dimensioneFoto = 0.6 * 1024 * 1024; // 600 Kb
$uploadFoto = new UploadField('LogoHeadline', 'Carosello (.jpg/.jpeg/.png/.gif - 600 Kb max.)');
$uploadFoto->getValidator()->setAllowedExtensions(array('jpg', 'jpeg', 'png', 'gif'));
$uploadFoto->getValidator()->setAllowedMaxFileSize($dimensioneFoto);
Folder::find_or_make($cartellaHome);
$uploadFoto->setFolderName($cartellaHome);
$fields = FieldList::create(
$uploadFoto,
TextField::create('Corpo', 'Testo')
);
$this->extend('updateCMSFields', $fields);
return $fields;
}
}
Page:
<?php
// Definizione Namespace
use SilverStripe\Forms\FieldList;
use SilverStripe\Assets\Folder;
use SilverStripe\Forms\GridField\GridField;
use SilverStripe\Forms\GridField\GridFieldConfig_RecordEditor;
use SilverStripe\Assets\Image;
use SilverStripe\Forms\TextField;
use SilverStripe\Forms\TextareaField;
use SilverStripe\AssetAdmin\Forms\UploadField;
/**
* Classe Home
*/
class Home extends Page
{
// Dichiarazione Proprietà
private static $db = [
'Summary' => 'HTMLText',
'LinkCta' => 'Text'
];
private static $has_many = [
'Headlines' => 'Headline'
];
private static $many_many = [
'Cliente' => Image::class
];
private static $translate = [
'Summary',
'LinkCta',
'Headlines'
];
private static $description = 'Home Page';
/**
* Metodo gestione campi Back-End
* Getter
* @return FieldList $fields Campi Back-End
*/
public function getCMSFields()
{
$fields = Page::getCMSFields();
$cartellaClienti = 'clienti';
$dimensioneFoto = 0.6 * 1024 * 1024; // 600 Kb
$fields->removeFieldFromTab('Root.Main', 'Content');
$fields->addFieldToTab('Root.Main', TextareaField::create('Summary', 'Riepilogo'));
$fields->addFieldToTab('Root.Main', TextField::create('LinkCta', 'Link (Call to Action)'));
$headlineConfig = GridFieldConfig_RecordEditor::create();
$fields->addFieldToTab('Root.Headline', new GridField('Headlines', 'Headline', $this->Headlines(), $headlineConfig));
$fields->addFieldToTab('Root.Clienti', $uploadClienti = new UploadField('Cliente', 'Clienti (.jpg/.jpeg/.png/.gif - 600 Kb max.)'));
$uploadClienti->getValidator()->setAllowedExtensions(array('jpg', 'jpeg', 'png', 'gif'));
$uploadClienti->getValidator()->setAllowedMaxFileSize($dimensioneFoto);
Folder::find_or_make($cartellaClienti);
$uploadClienti->setFolderName($cartellaClienti);
return $fields;
}
}
YAML
---
Name: corporate-consulting
---
SilverStripe\Core\Manifest\ModuleManifest:
project: corporate-consulting
# Localizzazione
SilverStripe\i18n\i18n:
default_locale: 'it_IT'
common_locales:
it_IT:
name: 'Italian'
native: 'Italiano'
en_GB:
name: 'English'
native: 'English'
TractorCow\Fluent\Extension\FluentDirectorExtension:
detect_locale: false
# Admin/Branding
SilverStripe\Admin\LeftAndMain:
application_name: 'Corporate Consulting'
application_link: 'https://corporate.it'
extra_requirements_css:
- themes/corporate/css/dist/admin.css
# Immagini
SilverStripe\Core\Injector\Injector:
SilverStripe\Assets\Image_Backend:
properties:
Quality: 75
---
Name: traduzioni
---
Caso:
extensions:
- 'TractorCow\Fluent\Extension\FluentExtension'
Headline:
extensions:
- 'TractorCow\Fluent\Extension\FluentExtension'
Reference:
extensions:
- 'TractorCow\Fluent\Extension\FluentExtension'
I'll be open to any suggestion.
Issue solved. The missing $owns
SiteTree property (see the doc - file ownership), in relation with the DataObjects involved, were the cause that was preventing the contents to be published (files and images especially).
To read more about it: DataObject Live version not created