2010-08-11 123 views
0

我似乎无法找到一种方法在同一视图中调用不同的控制器。我找到的最接近的是$ html-> link(“Register User”,array('controller'=>'users','action'=>'register'))。cakephp在一个视图中调用不同的控制器?

所以我做了cakephp的博客教程。我有一个posts_controller.php,现在我想添加一个星级评分系统。我GOOGLE了一些东西,并得到这个漂亮的已完成的评级系统,你可以下载:http://www.reversefolds.com/articles/show/rating2

现在我有两个控制器,rating_controller.php和post_controller.php。

我的基本路线'/'指向邮政控制员的索引操作。我的帖子的view.ctp显示了一个博客条目,我想在此视图中的评分系统中添加。并使用评级,我需要打电话给帮手像这样:

echo $rfRating->ratingBar($ratingInfo); 

当我在post的view.ctp文件中这样做。它抱怨。我试过用var $helpers = array('blah')搞乱了,但它不起作用,我最终合并了post_controller中的评级控制器,我认为这很愚蠢。我也可以将评分系统用于其他内容。

所以......我不知道该怎么做。其实这是一个谎言,我想我有两个想法如何解决这个问题。但我需要批评和其他解决方案,我的谷歌技能失败了。

  1. 我应该只将整个评分系统实现到app_controller.php中吗?那么每个控制器都会继承这个评分系统?听起来很愚蠢,因为我不认为我的用户注册需要评分系统。

  2. 我使用了另一种解决方案,requestAction('blab')。我认为这使我能够做的是...调用控制器内的另一个控制器。但这是令人沮丧的,因为它杀死了性能。我不完全知道如何做到这一点哈哈或如果它的作品。我打电话给评级控制器,但是它的辅助功能呢?也许它会识别它,如果我添加一个var $ helpers = array('rating');

无论如何,感谢大家提前花时间阅读本文。请指向正确的方向。

回答

2

让ratings_controller扩展posts_controller。

这使您能够有选择地决定哪些页面需要评分模块。

+0

哦,哇,谢谢。那是......沿着这条线,为什么我没有想到这一点。非常感谢你。 – mythicalprogrammer 2010-08-11 16:18:15

相关问题