2015-12-16 116 views
0

这是CakePHP的3.0定制逻辑

我要封装一些非平凡的PHP逻辑针对一个控制器操作一个.ctp文件中被称为(重复使用)数次。我试图找出最优雅的方式。

我有一些想法,其中没有一个似乎很优雅:

  1. $这在CTP文件执行上下文类视图。将View类的方法放在.ctp文件中作为$ this-> function()调用。这似乎是错误的分工,尤其是因为佣工似乎是为此而设计的。此外,这些功能将暴露给所有ctp文件。

  2. 创建一个帮手。这似乎是最好的方法,但该帮助程序始终会加载并暴露给所有.ctp文件,这似乎违反了遏制,因为逻辑仅与一个操作的视图相关。在没有更好的解决方案的情况下,这是我正在采用的路线。

  3. 为此元素/模型创建视图的子类,并将逻辑放在那里,以按照(1)中的方式进行访问。这看起来似乎是最优雅的解决方案,但是看起来子类化View用于替代媒体(例如PDF),并且我无法看到如何在制作给定控制器操作的视图时指导Cake使用该类。

  4. 将函数内嵌在.ctp文件中。我甚至不确定这是否会正常工作,并且将函数放在.ctp文件中似乎很难看。

有什么建议吗?

回答

1

那么,你没有解释你想用什么样的超级复杂逻辑,所以我会说3)。这是非常可能的,you can load helpers in a view files

$this->loadHelper('MyFancyLogic'); 

您还可以检出view cells。但是,再次,你没有解释到底是什么问题,你试图解决它很难推荐任何具体的东西。所以我会说这是一个帮手或一个视图单元格。