2016-07-26 86 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