CakePHP 组件和帮助程序之间的逻辑


Logic between CakePHP component and helper

我正在编写一个组件+帮助程序对,用于处理当前视图的JS文件的包含。

这个想法是自动加载与视图(或操作)同名的JS文件。因此,如果您有一个名为"admin_add.ctp"的视图和同一文件夹中的文件"admin_add.js",则JS文件将包含在JS缓冲区中。我希望这在两个 Before Render 调用中自动发生。

棘手的部分是我需要能够在控制器::操作级别(使用组件)启用/禁用自动加载,但包含逻辑需要在视图级别(使用帮助程序)进行。

如何将启用/禁用触发器从组件传递到帮助程序,而无需在每个视图模板中编写代码?

我通过修改组件中的控制器>helpers['helperName']数组来解决这个问题。

由于帮助程序是在组件的 beforeRender 调用之后实例化的,因此我可以修改帮助程序的设置并从 Helper::__contruct($View, $settings) 调用访问数据。

不确定我是否可以依靠 CakePHP 的内部来保持这种回调顺序,但它到目前为止有效。