2016-03-22 8 views
0

Veri nesnesinin birden çok şekilde nasıl kullanılacağını anlayamıyorum. Şu anda sadece bir sayfada görüntülenmesini sağlayabiliyorum.Silverstripe dataobject, birden çok sayfada görüntülenecek

Tablodaki öğeleri cms'de düzenleyebilmeyi, bir sayfadaki öğelerin listesini ve ardından başka bir sayfadaki belirli bir öğeyi görüntüleyebilmeyi istiyorum.

Şimdiye kadar bir sayfada tüm istemcileri listelememe ve bunları CMS'de düzenlememe izin veren şekilde yapılandırılmış olduğum şekilde. Onları "clientPage" dışındaki bir sayfada listeleyemem ya da bir müşterinin ayrıntılı bir görünümünü göremiyorum.

class Clients extends DataObject { 
public static $db = array(
    //All the table columns 
); 

// One-to-one relationship with profile picture 
public static $has_one = array(
    'ProfilePicture' => 'Image', 
    'ClientPage' => 'ClientPage' 
); 

// Summary fields 

public static $summary_fields = array(
    'ProfilePicture.CMSThumbnail'=>'Picture', 
    'FIRST_NAME'=>'First Name', 
    'LAST_NAME'=>'Last Name', 
    'EMAIL'=>'Email' 
); 

public function getCMSFields_forPopup() { 

    // Profile picture field 
    $thumbField = new UploadField('ProfilePicture', 'Profile picture'); 
    $thumbField->allowedExtensions = array('jpg', 'png', 'gif'); 


    // Name, Description and Website fields 
    return new FieldList(
     //all the editable fields for the cms popup 
    ); 
} 
} 

ClientPage

class ClientPage extends Page{ 
    private static $has_many = array(
     'Clients'=>'Client' 
    ); 
    public function getCMSFields() 
    { 
     $fields = parent::getCMSFields(); 
     $fields->addFieldToTab('Root.Client', GridField::create(
      'Client', 
      'Client List', 
      $this->Clients(), 
      GridFieldConfig_RecordEditor::create() 
     )); 

     return $fields; 
    } 
} 

class ClientPage_Controller extends Page_Controller{ 
    public function init() { 
     parent::init(); 
    } 
} 

Ben aynı verileri kullanarak bir dizin sayfası yapmak çalışırsanız çalışmıyor nesne

class ClientDirectoryPage extends Page { 
    private static $has_many = array(
     'Clients'=>'Client' 
    ); 
    public function getCMSFields() 
    { 
     $fields = parent::getCMSFields(); 
     return $fields; 
    } 
} 

class ClientDirectoryPage_Controller extends Page_Controller{ 
    public function init() { 
     parent::init(); 
    } 
} 

cevap

0

sen uygulamaya çalışıyorum çünkü kod çalışmıyor Polymorfic has-one relation yanlış.

Ancak hedef göre sen sahip olmalıdır:

  1. has_one Müşteri
  2. A ClientDirectoryPage görüntüler bağlantıların bir koleksiyon (sonra Müşteri alanları 1-1 ilişkisi kadar etkili ClientPage alanlar vardır) ClientPage olduğu bir ClientPages'e ve ilişki çeşitli yollarla uygulanabilir.

    a. SiteTree hiyerarşisini kullanma: ClientDirectoryPage altında birkaç ClientPage koyup listeye ClientDirectoryPage::Children()

    b'ye erişin. Eğer ayrı İstemci sınıfını gerekir neden, ClientDirectoryPage_Controller::ClientPages()

+0

açıklık Lütfen içinde ClientPage::get() gibi tüm sayfaların listesini alın? –

+0

Ne Olsaydı Sadece sağlanan bağlantı ile doldurulmuş bir istemci sayfası oluşturmak istiyorsam. Ben zaten bir müşteriyle dolu bir tablo var ve her biri için bir sayfa oluşturmak istemiyorum .. Ben $ datObject :: tablodaki tüm satırların listesini görüntülemek için nasıl kullanabileceğimi anlamaya çalışıyorum. Onu bana göster? – silversunhunter

+0

İstemcilerin birden çok veri alanı vardır ve site yöneticisi tarafından site içinde yönetilir. Kullanıcılar/üyeler değiller ... – silversunhunter