模板中的SilverStripe条件

bro*_*gas 2 conditional if-statement silverstripe

我正在尝试修改我的一个模板,以便在除两种页面类型之外的所有模板上调用某个包含.

我使用的代码是:

<% if ClassName != BusinessPage || ClassName != BusinessSubPage %>
    ... some code here
<% end_if %>
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为if语句传递所有页面类型并且if语句中的代码被触发.

如果我将代码缩短为只有一种页面类型,它会在页面类型上给出预期的结果:

<% if ClassName != BusinessPage %>
    ... some code here
<% end_if %>  
Run Code Online (Sandbox Code Playgroud)

ClassName在if语句中使用as条件是否有一些意想不到的问题,我需要注意这可以解释我的问题?

3dg*_*goo 8

你的if语句逻辑不太正确.你想要的是使用&&(AND)而不是||(OR):

<% if $ClassName != "BusinessPage" && $ClassName != "BusinessSubPage" %>
Run Code Online (Sandbox Code Playgroud)

这是一个逻辑表,显示了三个不同类名的结果.

$ClassName      | $CN != BusinessPage | $CN != BusinessSubPage | OR    | AND   |
----------------|---------------------|------------------------|-------|-------|
ABC             | true                | true                   | true  | true  |
BusinessPage    | false               | true                   | true  | false |
BusinessSubPage | true                | false                  | true  | false |
Run Code Online (Sandbox Code Playgroud)

OR列显示无论ClassName结果如何总是如此.这就是if语句总是通过的原因.