这适用于CakePHP 3.0
我想封装一些非常重要的php逻辑,在一个.ctp文件中多次调用(重用)一个控制器操作。我试图找出最优雅的方式。
我有一些想法,其中没有一个看起来很优雅:
$ CTP文件执行上下文中的这是类View。将方法放在View类上以在.ctp文件中调用$ this-> function()。这似乎是错误的分工,特别是因为助手似乎是为此而设计的。此外,这些功能将暴露给所有ctp文件。
创建帮助器。这似乎是最好的"方式去,但是这个帮助器总是被加载并暴露给所有.ctp文件,这似乎违反了包含,因为逻辑只与一个动作的视图相关。如果没有更好的解决方案,这就是我正在采取的路线。
为此元素/模型创建View的子类,并将逻辑放在那里,如(1)所示进行访问。这似乎是最优雅的解决方案,但似乎子类化View适用于备用媒体(例如PDF),我无法看到如何在为给定控制器制作视图时指示Cake使用该类#39 ;行动。
在.ctp文件中内联函数。我甚至不确定这是否能正常工作,将函数放在.ctp文件中似乎很难看。
有什么建议吗?
答案 0 :(得分:1)
嗯,你没有解释你想在那里使用什么样的超级复杂逻辑,所以我会说3)。这很有可能,you can load helpers in a view files:
$this->loadHelper('MyFancyLogic');
您还可以结帐view cells。但同样,你没有解释你试图解决的问题,很难推荐任何特定的东西。所以我会说这是一个帮助者或一个观察细胞。