将数据从CakePHP组件传递给帮助程序

jpe*_*emi 4 cakephp helper

我需要在组件和帮助器之间共享数据.我正在将我自己的支付服务formdata生成器转换为CakePHP插件,我希望能够从控制器(使用组件)填写支付数据并使用帮助程序打印出数据.

到目前为止我尝试过的所有东西都觉得有点过于讨厌,所以让我问你:有没有优雅的方法将数据从组件传递给帮助器?


编辑:

我通过在组件初始化期间将原始的formadata类实例添加到ClassRegistry来解决了这种特殊情况.这样,帮助程序也可以使用ClassRegistry访问实例.

但是,这仅适用于对象,因此问题仍然存在.

Van*_* D. 6

遇到类似的问题,我发现这个解决方案最适合我.

你可以使用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,因此应该针对早期版本测试此解决方案.