簡體   English   中英

從silverstripe $ many_many關系返回所有者字段

[英]Return owner fields from silverstripe $many_many relationship

我在TestimonialBlocks <->推薦書之間有很多關系,定義為:

class TestimonialBlockSlice extends ContentSlice
{
    private static $db = array (
        'IconColour' => 'Enum("White,Blue,Green,Orange","Green")'
    );

    private static $many_many = array(
        'Testimonials' => 'Testimonial'
    );

    private static $many_many_extraFields = array(
        'Testimonials' => array('SortOrder' => 'Int')
    );

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

        $config = GridFieldConfig_RelationEditor::create()
            ->removeComponentsByType('GridFieldDeleteAction')
            ->addComponents(new GridFieldDeleteAction('unlinkrelation'));
        $config->getComponentByType('GridFieldDataColumns')->setDisplayFields(array(
            'Text'=> 'Text',
            'Author'=> 'Author'
        ));

        $testimonialsField = new GridField(
            'Testimonials',
            'Testimonial',
            $this->Testimonials(),
            $config
        );

        $fields->addFieldToTab('Root.Main', $testimonialsField);
        return $fields;
    }
}


class Testimonial extends DataObject {
    private static $db = array(
        'Text' => 'Text',
        'Author' => 'Varchar(255)'
    );

    private static $belongs_many_many = array(
        'TestimonialBlocks' => 'TestimonialBlockSlice'
    );

    private static $summary_fields = array(
        'Text' => 'Text',
        'Author' => 'Author'
    );
}

一切正常,但是在模板中我無法獲得包含TestimonialBlockSlice的$ IconColour ...我已經嘗試了所有可以想到的方法。 我正在做這樣的事情:

<% loop Testimonials.Limit(2) %>
    <div class="testimonial">
        <div class="icon-quote"><img src="/themes/images/icon-quote-{ ##getIconColourHere## }.png"></div>
        <div class="testimonial-text">$Text</div>
        <div class="testimonial-author">$Author</div>
    </div>
<% end_loop %>

TestimonialBlockSlice擴展了全盛/ silvertripe-slices,其中ContentSlice是一個DataObject。 關於如何引用此特定TestimonialBlockSlice的IconColour的任何想法? 幫助極大的贊賞:)

輸入循環時,請輸入要循環的項目的范圍/上下文 在這種情況下,您處於“ Testimonial ”范圍內。

IconColour屬於TestimonialBlockSlice類(父級),因此您可以在范圍級別上移“向上”訪問它:

<% loop Testimonials.Limit(2) %>
    <div class="testimonial">
        <div class="icon-quote"><img src="/themes/images/icon-quote-{$Up.IconColour}.png"></div>
        <div class="testimonial-text">$Text</div>
        <div class="testimonial-author">$Author</div>
    </div>
<% end_loop %>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM