我正在开发一个网站;用户可以通过一个注册帐户添加汽车和手机。然而,我在右侧和左侧的盒子上有顶部的打击(汽车,手机),在中间我有最近添加的汽车和手机。我把顶部的命中分成了元素,元素是topCars,topMobiles.I我想写两个函数来做我的东西。这两个功能都应该是通用的,因为将来我们可能会添加一些其他服务,如软件或电影。然而,第一个功能将获得最近的汽车或手机......等,这将发布在我的主页中间。第二个功能应该是(汽车,手机,电影......等)的热门歌曲。我写了以下代码:
class AppController extends Controller
{
var $uses = array('Car','Mobile');
function Controler()
{
App::import('Core', 'Sanitize');
}
function beforeRender(){
$this->getLatestData();
}
function beforeFilter() {
$this->getTopData();
}
function getLatestData(){
$latestCars = $this->Car->find('all', array('order' => array('id' => 'desc'),
'limit' => 7));
$latestMobiles = $this->Mobile->find('all', array('order' => array('id' => 'desc'),
'limit' => 7));
$this->set('cars',$latestCars);
$this->set('mobiles',$latestMobiles);
}
function getTopData($item){ // to get the top hits
$top = $this->$item->find('all', array('order' => array('hits' => 'asc'),
'limit' => 3));
$this->set($item,$top);
}
}
我的代码可以很好地处理最新添加的项目,但是当我尝试获得热门命中时,它会返回错误。 请帮助我知道如何使它工作 感谢
答案 0 :(得分:1)
$this->requestAction('App/getTopData/'.$param);
答案 1 :(得分:0)
我认为你不应该把这些方法放在app_controller中。您应该创建另一个控制器并将getLatestData和getTopData放在那里。然后从元素中使用$ this-> requestAction从视图中调用控制器操作。当然,您还应该使用某种缓存来加快速度。
有些人会说你不应该使用requestAction,但这里有一篇来自Cake开发人员的文章: http://mark-story.com/posts/view/how-using-requestaction-increased-performance-on-my-site
答案 2 :(得分:0)
谢谢你们的确有效 我发现了另一篇文章,它可能对其他蛋糕初学者有用 http://bakery.cakephp.org/articles/gwoo/2007/04/12/creating-reusable-elements-with-requestaction