2012-08-24 49 views
0

我有以下問題: 我的頁面上有變量$GiftID。 我想循環使用我的功能getGifts()我所有的禮物對象。 當禮物的$ID等於頁面的$GiftID時,我希望發生某些事情。在控件中使用頁面變量作爲if語句條件

這裏是我的代碼示例:

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

使用$CurrentPage.GiftID工程控制裏面打印時,但如何在地球上我訪問它在if語句內?

我使用SS 2.9

回答

1

我沒有用過ss2.9,但據我知道你不能在任何2.x版本中都做<% if Top.GiftID = ID %>,你不能比較2個變量,你只能比較靜態值。 (但有可能在3.0)

所以,你必須這樣做在PHP端,如果你想只顯示slected禮物的對象,則:

  1. 如果GiftID實際上是數據庫領域的的Gift HAS_ONE關係,那麼你可以做<%控制禮品%>,它將範圍與GiftID
  2. 的送禮對象如果你真的有GiftID保存爲DB現場或其他方式,則可以做
    public function getGift() { return DataObject::get_by_id('Gift', $this->GiftID); }

兩種方法可以做到<%控制禮品%>,它將範圍之

如果要列出所有禮物和標記當前的禮物,那麼你需要做的是在PHP端(的foreach集對象並在當前對象上設置標誌)

+0

標記爲確認無法比較2個變量的最佳答案。通過查看生成的php並發現它實際上比較第二個變量名稱,就好像它是一個字符串,我想通了很久。感謝您的建議,以解決我的問題 - 我試圖做的是生成一個預選項的選擇列表,這取決於後期變量。我最終創建了一個在我的控制器中爲我生成這個html的方法。 – Cameron

0

你應該能夠Top訪問當前頁面:尚未

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

感謝您的快速回復!雖然SS似乎不允許任何變量與。在if語句中的變量名中。任何時候我嘗試使用CurrentPage.GiftID或Parent.GiftID或Top.GiftID我只是得到一個死亡的白色屏幕。 – Cameron

+0

在日誌或任何東西沒有錯誤? – Hamish

+0

在我的apache錯誤日誌中,我得到一個 ** PHP解析錯誤:語法錯誤,意外的'}'** 這只是當我有'如果Top.GiftID = ID'但語句拋出時沒有錯誤只是'如果Top.GiftID' – Cameron