2016-07-26 18 views
1

私はこれまで数時間でした。追加の$dbフィールドを保持していない がPage extends SiteTree私は$dbエントリBannerを保持している SubPage extends Page持っている:私は、2つのページの種類を持っています。現在のページタイプにバナーという名前の$dbフィールドが存在しない場合でも、これはを返す何らかの理由SilverStripeテンプレートステートメントは偽陽性を返します

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

これはPage.ssテンプレート内のif文です。しかし、バナーというデータベースにもテーブルがあり、このテーブルの存在が$ Bannerを引き起こすようです。

$ Bannerが$ dbフィールドを参照していることをテンプレートに明示し、この$ dbフィールドがこのpagetypeに対して宣言されていない場合は、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にはうれしく、Silverstripeの質問は今後も続きます:) – Barry

関連する問題