2016-07-26 1 views
1

나는 몇 시간 동안 머물렀다. 추가 $db 필드를 보유하지 이 Page extends SiteTree 내가 $db 항목 Banner을 보유하고 SubPage extends Page이 : 나는 두 페이지 유형을 가지고있다. 현재 PageType에서의 배너라는 이름의 $db 필드가없는 경우에도이 사실을 반환 몇 가지 이유를 들어SilverStripe 템플릿 문이 거짓 긍정을 반환합니다.

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

:

이것은 Page.ss 템플릿의 경우 문이다. 그러나 배너이라는 데이터베이스에도 테이블이 있습니다.이 테이블의 존재가 $ Banner를 트리거하는 것으로 보입니다.

$ Banner가 $ db 필드를 참조한다는 템플리트를 분명하게 만들고,이 $ db 필드가이 pagetype에 대해 선언되지 않은 경우 false를 반환하는 방법이 있습니까?

답변

1

확실한 방법은 서브 페이지의 컨트롤러에 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