我已经在这几个小时了。我有两种页面类型:
Page extends SiteTree
没有其他$db
字段和我有一个
保留SubPage extends Page
条目$db
的{{1}}。
这是 Page.ss 模板中的if语句:
Banner
由于某些原因,即使当前PageType中没有名为 Banner 的<% if $Banner %>
<% include Banner %> <- include the banner .ss template
<% end_if %>
字段,也会返回 true 。但是,数据库中还有一个名为 Banner 的表,似乎此表的存在会触发$ Banner。
有没有办法通过使模板清楚$ Banner引用$ db字段来修复此问题,如果没有为此pagetype声明此$ db字段,则返回false。
答案 0 :(得分:1)
100%确定的方法是在SubPage的控制器中创建一个名为BannerExists
的函数,然后在if
中使用它。
public function BannerExists() {
return !empty($this->Banner);
}
这是因为Silverstripe返回一个空字符串,其中找不到该字段。
或者你可以使用......
<% if not $Banner == "" %>
<% include Banner %>
<% end_if %>
...或
<% if $Banner == "" %><% else %>
<% include Banner %>
<% end_if %>