【问题标题】:SilverStripe get first children in a rowSilverStripe 连续获得第一个孩子
【发布时间】:2011-11-21 21:45:24
【问题描述】:

我有多个孩子,我在一个网格中显示。 4 个孩子排成一排。现在我想连续给每个第一个和最后一个孩子一个额外的类来指定更多样式。我试过了:

<% if FirstInRow %>
    <div class="gridContent firstInRow"></div>
<% else %>
    <div class="gridContent"></div>
<% end_if %>

这就是函数:

function FirstInRow(){
    return ($this->Pos(1) % 4 == 1) ? true : false;
}

【问题讨论】:

    标签: templates silverstripe


    【解决方案1】:

    您可以在模板中使用ModulusMultipleOf 控件。

    $Modulus(value, offset) // returns an int
    $MultipleOf(factor, offset) // returns a boolean.
    

    http://doc.silverstripe.org/sapphire/en/reference/advanced-templates#modulus-and-multipleof

    【讨论】:

    • 谢谢,正是我正在寻找的!
    【解决方案2】:

    当您可以从 0 开始时,Modulus 效果会更好。试试这个吧:

    function FirstInRow(){
        return ($this->Pos(0) % 4 == 0);
    }
    

    请注意,我也删除了多余的 ternay 运算符;如果它使代码对您更清晰,您可以保留它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-24
      • 1970-01-01
      • 2015-12-26
      • 2017-03-11
      • 1970-01-01
      • 2013-03-07
      • 2018-03-11
      • 2011-03-06
      相关资源
      最近更新 更多