使用页面变量作为控件中的if语句条件

时间:2012-08-24 03:08:34

标签: silverstripe

我有以下问题: 我的页面上有变量$GiftID。 我想使用我的函数getGifts()遍历所有礼物对象。 当礼物的$ID等于页面的$GiftID时,我希望发生一些事情。

以下是我的代码示例:

$GiftID 
<% control getGifts %> 
   <% if CurrentPage.GiftID = ID %>This is it!<% end_if %> 
<% end_control %>

在控件内打印时使用$CurrentPage.GiftID,但我是如何从if语句中访问它的呢?

我正在使用SS 2.9

2 个答案:

答案 0 :(得分:1)

我还没有使用ss2.9,但据我所知,你不能在任何2.x版本中做<% if Top.GiftID = ID %>,你无法比较2个变量,你只能比较静态的vaules。 (但有可能在3.0)

所以你必须在php方面这样做,如果你只想显示所选择的礼物对象,那么:

  1. 如果GiftID实际上是has_one关系Gift的数据库字段,那么您可以执行&lt;%control Gift%&gt;它将使用GiftID
  2. 确定Gift对象的范围
  3. 如果您确实将GiftID保存为DB字段或其他,则可以执行
    public function getGift() { return DataObject::get_by_id('Gift', $this->GiftID); }
  4. 你可以做的两种方式&lt;%control Gift%&gt;它将涵盖范围

    如果你想列出所有礼物并标记当前的礼物,那么你需要在php端进行(foreach对象集并在当前对象上设置一个标志)

答案 1 :(得分:0)

您应该可以使用Top访问当前页面:

<% control getGifts %> 
   <% if Top.GiftID = ID %>This is it!<% end_if %> 
<% end_control %>