2017-06-20 69 views
2

我有TestimonialBlocks之间的many_many关系< - >褒奖,定义为:返回所有者字段

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' 
    ); 
} 

一切正常,但在模板我不能得到的的$ IconColour包含TestimonialBlockSlice ...我试过了我能想到的一切。我做这样的事情:

<% 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延伸全盛/ silverstripe切片,其中ContentSlice是一个数据对象。 有关如何引用此特定TestimonialBlockSlice的IconColour的任何想法?帮助非常感谢:)

回答

4

当你输入一个循环,你输入你正在循环的项目the scope/context。在这种情况下,您在Testimonial的范围内。

IconColour属于TestimonialBlockSlice类(父),这样你就可以移动"up" a scope level访问它:

<% 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 %> 
+0

感谢罗比,多数民众赞成的第一件事我试过:)不过之一,在这不起作用案例... – galilee

+0

只是注意到我用IconColor - 编辑显示IconColour –

相关问题