2011-04-18 31 views
1

如果我尝试多维数组分配到一类我得到这个错误如何将多维数组作为参数分配给类?

  {Widgets->Widget 
        media='videos' 
        filters=Array('a' => 'b', 'c' => 'd') 
      } 

"{assign var='X' value = Array('a' => 'b', 'c' => 'd')}" - Unexpected " => ", expected one of: "","" , ")"' 

this doesn't work as well 
      filters['a']='b' 
      filters['c'] = 'd' 

是有办法绕过这个限制? 我使用的smarty版本是最新版本。

的文件是不是说得很清楚: http://www.smarty.net/docs/en/advanced.features.objects.tpl

问候

+0

好吧,我发现了一个愚蠢的方法来创建2个数组来完成这个过滤器='a'filters_values ='b'然后array_combine他们 – sathia 2011-04-18 15:16:21

回答

0

我不知道,如果它甚至有可能在分配模板的Smarty的数组。我一直通过在PHP代码中实例化一个数组来避免这种情况,然后您可以将它分配给PHP中的一个对象,然后调用$ smarty-> assign(“object”,$ objectWithArray);

+0

肯定,但这是一个小部件,我的意图是允许设计人员构建模块飞行。所以我有一个庞大的类接受参数并呈现一个输出的PHP – sathia 2011-04-18 15:20:24

+0

仍然必须有一种方法如何调用PHP来为Smarty做这些...我不喜欢在smarty中指定任何值 - smarty应该只用于提交信息和拖延布局,所以你要在你的PHP代码中做所有你的逻辑... 如果它有一些操作从用户输入模板调用或所以这是一个地方做... – shadyyx 2011-04-18 15:23:14

+0

我意识到这一点,逻辑是在PHP安全和健全。 smarty只是将参数传递给一个类,这个类然后解析另一个模板并呈现输出。它只是一个更简单的方法来委托工作给设计师,如果参数不行的话,我会抛出一个异常,直到他们明确表示 – sathia 2011-04-18 15:38:57