2015-07-09 97 views
0

我使用Smarty的模板系统,我试图为一个if语句PHP的if语句检查某个不确定的对象

{if isset($left_column_size) && !empty($left_column_size) && $category->name ne "Health"} 

这工作做,但如果没有类别对象设置为指定的页面,我得到的价值PHP的通知:
未定义指数:
类 试图让非对象的属性

我真正想要的是什么如下

{if isset($left_column_size) && !empty($left_column_size) {if isset($category)}&& $category->name ne "Health"{/if}} 

如果我尝试这个,我得到错误Smarty编译器:模板中的语法错误代码太多的速记属性。有谁知道在这里做正确的事情来摆脱这些PHP错误通知是?谢谢

+0

)' - '空( )'在未定义的var上将返回'false'并且不会发出警告/通知。 –

+0

我尝试使用&&空($ category-> name eq“Health”)'仍然获得所有相同的php通知 – Trey

+0

,但empty()也会在“false-y”值上返回true,所以'left-size = 0 '会返回误报。 –

回答

1

它看起来像你在正确的轨道上。试试沿着这些线路

if(!empty($left_column_size) && 
    ((!empty($category) && $category->name ne "Health") 
    || empty($category)) 
+0

关于这一点的事情是,我也需要它在$ category为空时工作。 – Trey

+0

谢谢你让我走在正确的轨道上 – Trey

+1

@Trey编辑。更类似的东西? – mjohns

0

我结束了做解决这个:如果您在使用`空()`你不需要`isset(

{if isset($left_column_size) && !empty($left_column_size) && 
(empty($category) || (!empty($category) &&$category->name ne "Health Topics"))}