2011-10-14 3 views
1

저는 SilverStripe을 처음 접했습니다. 포럼을 검색하고 설명서를 읽었지만 내가 무엇을했는지 알 수 없었습니다.SilverStripe - 한 페이지에만 해당하는 데이터 객체를 표시합니다.

나는 dataobjectmanager를 사용하여 슬라이드 쇼 이미지를 페이지에 추가하고 있습니다. 슬라이드 쇼 이미지가 포함 된 한 페이지를 만든 다음 동일한 페이지 유형에서 새 페이지를 만들면 슬라이드 쇼 이미지가 이미 첫 페이지의 이미지로 채워집니다. 글로벌 자산으로 추가 된 것 같아요?

dataobjectmanager로 한 페이지에만 개체를 ​​추가 할 수 있습니까?

이 당신이 Slide has_one HomePage는하지만해야한다는 지정한의 관계에서

<?php 
class AwardsHolder extends Page { 
     static $db = array(

    ); 
    static $has_many = array(
     'Slides' => 'Slide', 
     'Spotlights' => 'Spotlight' 
    ); 

    static $allowed_children = array('ArticlePage'); 

    public function getCMSFields() { 
     $fields = parent::getCMSFields(); 

     $manager = new DataObjectManager(
$this, 
'Slides', 
'Slide' 
); 
$fields->addFieldToTab("Root.Content.Slideshow", $manager); 

$manager = new DataObjectManager(
$this, 
'Spotlights', 
'Spotlight' 
); 
$fields->addFieldToTab("Root.Content.Spotlights", $manager); 

$fields->removeFieldFromTab("Root.Content.Main", 'Content'); 
     return $fields; 
    } 
} 

class AwardsHolder_Controller extends Page_Controller { 


} 

답변

2

내 페이지 코드

<?php 
class Slide extends DataObject { 
/** 
* 
* DB fields 
* @var unknown_type 
*/ 
static $db = array (
'Title' => 'Varchar(255)', 
'Text' => 'Text', 
    'Link' => 'Text' 
); 

/** 
* 
* Relations 
* @var array 
*/ 
static $has_one = array (
'HomePage' => 'HomePage', 
'Image' => 'Image' 
); 

/** 
* 
* /Fields to show in the DOM table 
* @var array 
*/ 
static $summary_fields = array(
'Thumb' => 'Image', 
'Title' => 'Title', 
'Text' => 'Text', 
    'Page link' => 'Link' 
); 

/** 
* (non-PHPdoc) 
* @see httpdocs/sapphire/core/model/DataObject::getCMSFields() 
*/ 
public function getCMSFields() 
{ 
return new FieldSet(
new TextField('Title'), 
new TextField('Text'), 
new TextField('Link'), 
new ImageField('Image', 'Image', null, null, null, 'slides') 
); 
} 

/** 
* 
* Generate our thumbnail for the DOM 
*/ 
public function getThumb() 
{ 
if($this->ImageID) 
return $this->Image()->CMSThumbnail(); 
else 
return '(No Image)'; 
} 

} 

내 슬라이드/데이터 객체 코드입니다 ... AwardsHolder . 처음부터 살펴 보겠습니다.

+0

그리고 고쳐졌습니다. 고마워, 나는 이걸 가지고 몇 시간 동안 책상에 머리를 두드렸다. –