我想从视图中调用一个控制器函数。 在CakePHP中可能吗?你可以在CakePHP的视图中调用控制器函数吗?
4
A
回答
6
可以通过requestAction method进行设置,但不建议由于轻微的性能影响。明智地使用它。
由于Xr在注释中提到,使用requestAction通常表示设计问题(MVC分离)。
1
叶氏使用requestMethod与高速缓存中/app/controllers/articles_controller.php
function myfunction(){
$out = $this->Article->find('all');
return $out
}
0
requestAction
方法
$out = Cache::read('savedincache');
if(empty($out)){
$out = $this->requestAction('/articles/myfunction');
Cache::write('savedincache', $out);
}
是坏主意,如果你需要从控制器设置可变我认为这是更好如果您将控制器代码移至模型,然后在app_controller.php中,从beforeFilter
函数中,您可以使用您的模型,然后从模型中调用您的函数
1
我已经成功完成了以下操作(CakePHP 2.3)。假设你有一个名为“functionToRun()”的公共函数的“MyController”。
从视图文件:
$variable = new MyController();
$variable->functionToRun($parameter);
注意“$这个 - >请求”对象将无法使用,所以如果你需要,在功能数据,你必须通过它的作为参数,并且可能对该功能进行更改以允许这样做。
我不会争论这是否是一个好主意,但应该指出的是,有时候大楼有点火了,而且你必须在昨天把它熄灭。我会承认,可能整体设计应该是更好的,但我们没有时间重建第一层到第三层,因为我们到达第五层时发现了这个问题。
鉴于规则的选择,我更喜欢打破这个规则,而不是关于代码重复的规则,这对我公认的有限知识是唯一剩下的选择。代码重复会导致更糟糕的维护恶梦。
相关问题
- 1. 你可以使用UIPageViewController浏览多个视图控制器吗?
- 2. 容器视图视图控制器中的UIViewController调用函数
- 3. 如何在cakephp 3的不同视图中从控制器调用函数?
- 4. cakephp在一个视图中调用不同的控制器?
- 5. CakePHP:我可以在没有关联视图的控制器中创建一个函数吗?
- 6. 在swift中从不同的视图控制器调用函数
- 7. 在html视图中调用onchange事件的控制器函数
- 8. Codeigniter:在控制器视图中调用函数
- 9. 在另一个视图控制器中调用函数
- 10. 当你调用成员函数时,你可以调用friend函数吗?
- 11. 从视图中调用控制器的方法CakePHP
- 12. 从他的超级调用视图控制器中的函数
- 13. 在其他视图控制器的第一个视图中调用函数
- 14. 如何在cakePHP控制器中调用javascript函数?
- 15. 在MVC中,控制器可以直接与视图对话吗?
- 16. 我可以在控制器中调用多个Java脚本函数吗?
- 17. 如何调用表视图控制器中的函数?
- 18. 如何调用父视图控制器中的函数/方法
- 19. 如何从codeigniter视图调用laravel控制器中的函数?
- 20. didReceiveRemoteNotification - 当前视图控制器中的调用函数
- 21. 可以在我的mvc3控制器中调用SignalR的IConnectionManager吗?
- 22. 从CakePHP中的控制器调用静态模型函数
- 23. 可以在CakePHP中访问控制器中的模型数据吗?
- 24. 从AngularJS视图中调用控制器函数
- 25. 你可以在函数调用中调用一个PHP定义的值吗?
- 26. 可以在Rack中间件中调用Rails 3控制器吗?
- 27. 你如何强制视图控制器调用preferredFocusView?
- 28. 使用另一个类的参数在视图控制器中调用函数
- 29. 你可以在数据绑定服务器控件中调用PadLeft吗?
- 30. 从视图控制器调用函数 - 参数错误 - Swift2
不完全是海量的(至少不是):http://cakedc.com/developer/mark_story/2009/02/27/benchmarking-requestaction。 不过,如果你想调用一个控制器函数,你可能会遇到如何在MVC模型的各个部分之间分离功能的问题。 – 2009-07-08 13:24:03