【发布时间】:2014-03-16 16:09:48
【问题描述】:
我正在 Silverstripe 项目中的模板文件中调用我的 IncrementOffset() 方法。预期的结果是,每次调用该方法时,私有的 offset 属性都会增加 1。offset 方法如下所示:
class NewPage extends Page {
public function IncrementOffset() { $this->offset++; }
public function ResetOffset() { $this->offset = 0; }
public function Offset() { return $this->offset; }
}
在我的 NewPage.ss 模板中,我有以下代码:
<% loop $InfoPanels %>
<% if not $Description %>
<div class="span3">
<h4 align="center">$Title</h4>
<a href="{$ButtonURL}" target="blank"><div style="background: url('{$Image.SetSize(225, 225).URL}') no-repeat center center; width: 225px; height: 225px;" class="center3"></div></a>
<a href="{$ButtonURL}" target="blank" class="btn btn-block">$ButtonLabel</a>
</div>
<% if $MultipleOf(3, $Top.Offset()) %>
</div>
<div class="row-fluid">
<% end_if %>
<% else %>
$Top.IncrementOffset()
<% end_if %>
<% end_loop %>
<p>Offset is: $Offset</p>
调用IncrementOffset()后的偏移打印结果输出为:
偏移量为:0
如果我在这里遗漏了一些明显的东西,谁能告诉我?我只是不明白为什么这不起作用。对我来说,这似乎应该是一件很简单的事情。
【问题讨论】:
-
我从来没有用过silverstripe,但你不应该从
$Top.Offset()而不是$Offset获得价值吗? -
$Top 不像其他变量那样是一个变量,它是一个作用域,总是指最外层的作用域。所以这实际上是正确的。
标签: php silverstripe