Php if语句中的Smarty调用对象方法

Php if语句中的Smarty调用对象方法,php,smarty,Php,Smarty,所以我想给smarty分配一个对象 $a = FrameworkCore::getUserSessionObj(); // returns the object ofc $smarty->registerObject('global_session',$a); {if $global_session->isLoggedIn eq true} LOGGED IN {else} NO {/if} 现在,我试图将方法调用放入if语句中,但

所以我想给smarty分配一个对象

    $a = FrameworkCore::getUserSessionObj(); // returns the object ofc
    $smarty->registerObject('global_session',$a);



  {if $global_session->isLoggedIn eq true}
    LOGGED IN
  {else}
    NO
  {/if}
现在,我试图将方法调用放入if语句中,但它不起作用。使用不同的值和其他方法多次尝试

方法调用的输出工作正常(见下文)


因此,/my failure似乎出现在if语句中,但我无法让它工作。

看起来需要在方法名称中添加括号,就像在PHP中一样

{if $global_session->isLoggedIn()}
    LOGGED IN
{else}
    NO
{/if}
使用时,您将像添加自定义函数一样添加它们。因此,您可以像以前一样使用
{global\u session->getType}
{global\u session->isLoggedIn}
之类的表达式。但是您不能像在
{$global\u session}
中那样使用它,因为您没有使用
assign()
指定这样的变量。这也意味着您不能编写如下代码:

{if global_session->isLoggedIn eq true}
...
{/if}
检查:

  • 一种方法是将对象注册到模板中,然后使用类似于自定义函数的语法访问它们

  • 另一种方法是
    assign()
    将对象分配给模板,并像访问任何其他指定变量一样访问它们


因此,当您想将对象用作变量时,请使用
assign()

您遇到的输出/错误是什么?我发布的代码不会抛出错误。如果我删除If语句中的美元符号,它将抛出错误,该资源为null
{if global_session->isLoggedIn eq true}
...
{/if}