SilverStripe Fluent - 未创建 DataObject Live 版本
SilverStripe Fluent - DataObject Live version not created
在 SS 4.0.3 上仅适用于 DataObjects(具有多关系),数据库 Localised_Live
table 版本不会在 CMS 端保存期间创建。这导致前端页面上有 NULL
内容。
如果我以管理员身份登录并在草稿模式下检查涉及的其中一个页面(对于 3 个不同的 DataObjects 实际上是相同的),我会定期查看内容。
这里有几个屏幕截图:
Front end
Database
这是涉及的代码(仅从 3 个中选择 1 个 - 相同):
数据对象
<?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;
}
}
页数:
<?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'
我愿意接受任何建议。
问题已解决。缺少 $owns
SiteTree 属性(请参阅文档 - file ownership),与所涉及的数据对象有关,是阻止内容发布的原因(尤其是文件和图像)。
阅读更多相关信息:DataObject Live version not created
在 SS 4.0.3 上仅适用于 DataObjects(具有多关系),数据库 Localised_Live
table 版本不会在 CMS 端保存期间创建。这导致前端页面上有 NULL
内容。
如果我以管理员身份登录并在草稿模式下检查涉及的其中一个页面(对于 3 个不同的 DataObjects 实际上是相同的),我会定期查看内容。
这里有几个屏幕截图:
Front end
Database
这是涉及的代码(仅从 3 个中选择 1 个 - 相同):
数据对象
<?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;
}
}
页数:
<?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'
我愿意接受任何建议。
问题已解决。缺少 $owns
SiteTree 属性(请参阅文档 - file ownership),与所涉及的数据对象有关,是阻止内容发布的原因(尤其是文件和图像)。
阅读更多相关信息:DataObject Live version not created