SilverStripe 3:在模板中的循环内调用控制器中的函数

SilverStripe 3:在模板中的循环内调用控制器中的函数,silverstripe,Silverstripe,我编写了一个简单的自定义函数来处理(>) 这工作正常,返回1或0 当使用循环调用函数时,当我将$Pos传递给函数时,它停止工作 SilverStripe版本3 控制器 function MoreThen($pos, $value) { if($pos > $value) { return TRUE; } else { return FALSE; } } 模板 <% loop GalleryObjects %> <% if Top.MoreThen($Pos

我编写了一个简单的自定义函数来处理(>) 这工作正常,返回1或0

当使用循环调用函数时,当我将$Pos传递给函数时,它停止工作

SilverStripe版本3

控制器

  function MoreThen($pos, $value) {
if($pos > $value) {
  return TRUE;
} else {
  return FALSE;
}
}

模板

<% loop GalleryObjects %>
 <% if Top.MoreThen($Pos,2)  %>
$Pos
<% end_if %>

$Pos

AFAIK不能使用变量作为函数调用的参数,只能使用具体的值。根据要执行的操作,您可能希望在模板中使用GalleryObjects.limit(),或者编写一个只返回偏移量大于2的GalleryObjects的特定getter。希望这有帮助

如果对象位置超过2,我只想显示不同大小的图像。我刚才补充说。不是很干净。也许一个稍微不那么脏的解决方案是使用。这将有利于处理图像位置>=6您可以创建自定义模板迭代器:[$Pos from bottom inside][1][1]: