我正在尝试使用smarty来扩展Lithium PHP,除了我的smarty插件之外,一切正常,以允许访问锂助手。
我聪明的功能意味着锂电助手的“收获”。我正在努力的部分是动态地将助手参数添加到我的回调中。
简化代码
$params = array('Google', 'http://www.google.com');
$helper = function($args){
return $this->html->link($args);
};
return call_user_func_array($helper, $params);
此结果为<a href="/Google">Google</a>
进一步测试表明,上面只将$ params数组中的第一项传递给回调...奇怪。所以我把它包装在自己的数组中。拿那个,我无法解释的事情!
return call_user_func_array($helper, array($params));
这会产生一个我不会进入的锂错误,但是看起来帮助器正在传递一个数组,而不是将数组中的参数作为单独的参数传递。
错误代码段
'找不到网址( 0 => 'Google', 1 => 'http://www.google.com', 'controller' => 'pages', 'action' => 'index')
的参数匹配。
所以我认为我错过了使用call_user_func_array方法。
如果你能想到一个更好的方法来动态地传递任何数量的参数,那么我就不会出售这个是实现我目标的唯一解决方案。
请注意:$ this-&gt;
html
- &gt;link
是解释我的问题的简化方法,html
和{{1该对象的部分实际上将动态更改,因此需要完全动态的函数参数。
答案 0 :(得分:2)
$helper
仅使用一个参数声明,只有一个转移到$this->html->link
。
为什么不直接使用call_user_func_array(array($this->html, 'link'), array($params));
?
答案 1 :(得分:0)
你为什么不这样做
return $helper($params);
在我看来,不需要call_user_func_array()
或者请澄清你为什么要这样,因为对我来说这是有效的。