2016-07-26 45 views
1

我一直在這個小時。我有兩個頁面類型: Page extends SiteTree其中沒有附加$db領域我有一個 SubPage extends Page持有$db進入BannerSilverStripe模板語句返回假陽性

這是if語句在Page.ss模板:

<% if $Banner %> 
    <% include Banner %> <- include the banner .ss template 
<% end_if %> 

出於某種原因,即使是在目前的網頁類型命名橫幅沒有$db場這個返回。但是,數據庫中還有一個名爲Banner的表,並且該表的存在似乎觸發了$ Banner。

有沒有辦法通過使模板清楚$ Banner引用$ db字段來解決此問題,並且如果未爲此pagetype聲明此$ db字段,則返回false。

回答

1

100%確定的方法是在子頁面的控制器中創建一個名爲BannerExists的函數,然後在if中使用該函數。

public function BannerExists() { 
    return !empty($this->Banner); 
} 

這是因爲Silverstripe正在返回空字符串,而該字段未找到。

另外,你可以使用...

<% if not $Banner == "" %> 
    <% include Banner %> 
<% end_if %> 

或...

<% if $Banner == "" %><% else %> 
    <% include Banner %> 
<% end_if %> 
+0

這是很奇怪的,我以前試過這個代碼,但沒有奏效。我可能忽略了一些東西。感謝拯救巴里的一天。 – Faloude

+0

歡迎來到@Faloude,留下銀色條紋問題:) – Barry