我需要在组件和帮助器之间共享数据.我正在将我自己的支付服务formdata生成器转换为CakePHP插件,我希望能够从控制器(使用组件)填写支付数据并使用帮助程序打印出数据.
到目前为止我尝试过的所有东西都觉得有点过于讨厌,所以让我问你:有没有优雅的方法将数据从组件传递给帮助器?
编辑:
我通过在组件初始化期间将原始的formadata类实例添加到ClassRegistry来解决了这种特殊情况.这样,帮助程序也可以使用ClassRegistry访问实例.
但是,这仅适用于对象,因此问题仍然存在.
遇到类似的问题,我发现这个解决方案最适合我.
你可以使用helper的__construct方法与$ controller-> helpers数组配对.
由于在Helper::_construct()之后调用Component::beforeRender,您可以修改$controller->helpers['YourHelperName']数组以将数据传递给助手.
组件代码:
<?php
public function beforeRender($controller){
$controller->helpers['YourHelperName']['data'] = array('A'=>1, 'B'=>2);
}
?>
Run Code Online (Sandbox Code Playgroud)
助手代码:
<?php
function __construct($View, $settings){
debug($settings);
/* outputs:
array(
'data' => array(
'A' => (int) 1,
'B' => (int) 2
)
)
*/
}
?>
Run Code Online (Sandbox Code Playgroud)
我正在使用CakePHP 2.0,因此应该针对早期版本测试此解决方案.
| 归档时间: |
|
| 查看次数: |
6219 次 |
| 最近记录: |