2
我正在使用Silverstripe 3.1兩個數據對象在一個網格中用可訂購列進行管理。 Silverstripe 3.1
我想在一個管理模型頁面管理兩個數據對象。這是我的第一個數據對象:
class Interview extends DataObject
{
private static $db = array(
'Name' => 'Varchar(255)',
'LieuExercice' => 'Varchar(255)',
'Presentation' => 'Text',
);
private static $has_one = array(
'Photo' => 'Image'
);
private static $belongs_many_many = array(
'Journal' => 'Journal'
);
// Change the label in datagrid
private static $field_labels = array(
'NameAndExercice' => 'Nom de la personne interviewée',
'LieuExercice' => 'Lieu d\'exercice'
);
public function getNameAndExercice(){
return new LiteralField('NameAndExercice', $this->Name . ' <em style=\'font-size:11px\'>('.$this->LieuExercice.')</em>');
}
private static $summary_fields = array(
'NameAndExercice',
);
public function getCMSFields() {
$fields = FieldList::create(TabSet::create('Root'));
$fields->addFieldsToTab('Root.Contenu', TextField::create('Name', 'Nom de la personne interviewée'));
$fields->addFieldsToTab('Root.Contenu', TextField::create('LieuExercice', 'Lieu d\'exercice')->setDescription('Lieu d\'exercice de la personne'));
$fields->addFieldsToTab('Root.Contenu', TextareaField::create('Presentation', 'Présentation')->setDescription('Courte présentation de la personne'));
$fields->addFieldsToTab('Root.Contenu', $photo = UploadField::create('Photo', 'Portrait de la personne interviewée')->setDescription('Fichier image du portrait de la personne'));
//Fields configuration
$photo->getValidator()->setAllowedExtensions(array('png', 'jpg', 'gif', 'jpeg'));
$photo->setFolderName('interview-photos');
return $fields;
}
}
這裏是我的第二個數據對象:
class Article extends DataObject
{
private static $db = array(
'Title' => 'Varchar(255)',
);
private static $has_one = array(
'Photo' => 'Image'
);
private static $belongs_many_many = array(
'Journal' => 'Journal'
);
public function getCMSFields() {
$fields = FieldList::create(TabSet::create('Root'));
$fields->addFieldsToTab('Root.Contenu', TextField::create('Title', 'Titre de l\'article'));
$fields->addFieldsToTab('Root.Contenu', $photo = UploadField::create('Photo', 'Portrait de la personne interviewée')->setDescription('Fichier image du portrait de la personne'));
//Fields configuration
$photo->getValidator()->setAllowedExtensions(array('png', 'jpg', 'gif', 'jpeg'));
$photo->setFolderName('interview-photos');
return $fields;
}
}
最後,我有一個 '父' dataObject時巫婆包含一些訪談和文章:
class Journal extends DataObject
{
private static $db = array(
'Title' => 'Varchar',
'DatePublication' => 'Date'
);
private static $has_one = array(
'Couverture' => 'Image'
);
private static $many_many = array(
'Interviews' => 'Interview',
'Articles' => 'Article',
);
private static $many_many_extraFields = array(
'Interviews' => array(
'SorterField' => 'Int',
),
'Articles' => array(
'SorterField' => 'Int',
),
);
public function getCMSFields(){
$fields = FieldList::create(TabSet::create('Root'));
$fields->addFieldsToTab('Root.Main', array(
$titleField = TextField::create('Title', 'Titre/Numéro du journal'),
$datePublicationField = DateField::create('DatePublication', 'Date de publication'),
$uploadField = UploadField::create('Couverture', 'Couverture du journal')
));
if($this->ID){
$fields->insertAfter(
new Tab('Content', 'Contenu du journal'),
'Main'
);
//$buttonCreateMultiClass = new GridFieldAddNewMultiClass();
//$buttonCreateMultiClass->setClasses(array('Interviews', 'Article'));
$config = GridFieldConfig_RelationEditor::create();
$config->addComponent(new GridFieldOrderableRows('SorterField'));
$fields->addFieldsToTab('Root.Content', GridField::create(
'Interviewsz',
'Contenu de ce journal',
$this->getManyManyComponents('Interviews')->sort('SorterField'),
$config
));
}
// Fields configuration
$datePublicationField->setConfig ('showcalendar', true);
$uploadField->getValidator()->setAllowedExtensions(array('jpg', 'gif', 'png', 'jpeg'));
$uploadField->setFolderName('journals-couvertures');
return $fields;
}
}
我想在日記模型管理頁面: - 創建新日記:好,完成 - 將一次或多次採訪鏈接到本期刊 - 將一篇或多篇文章鏈接到本期刊 - 管理文章和期刊內部採訪的順序
這是怎麼回事?
感謝您的幫助。
只是爲了澄清 - 這裏面臨的問題是,訪談和文章是作爲一個混合列表排序?所以你不能只擁有兩個獨立的網格域,每個網格域都可獨立訂購? –
是的!這是問題。訪談和文章屬於期刊。像報紙一樣。我必須管理訂單。 –
前幾天我們在IRC上聊過嗎?您需要從一個子類化兩個DataObjects,然後您可以在一個Gridfield中管理排序順序。或者你需要一些其他的數據對象來創建關係。 – wmk