0

我正在开发一个网站;用户可以使用一个注册帐户添加汽车和手机。但是,我在右侧和左侧的方框中显示了热门​​(汽车、手机),在中间我有最近添加的汽车和手机。我将热门歌曲拆分为元素,这些元素是 topCars、topMobiles。我正在考虑编写两个函数来完成我的工作。这两个功能都应该是通用的,因为将来我们可能会添加一些其他服务,例如软件或电影。然而,第一个功能将获取最近的汽车,或手机......等,并将发布在我的主页中间。第二个功能应该获得(汽车,手机,电影......等)的热门歌曲。我写了以下代码:

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);
  }
}

我的代码适用于最新添加的项目,但当我尝试获得热门点击时,它会返回错误。请帮助我知道如何使它工作谢谢

4

2 回答 2

1
$this->requestAction('App/getTopData/'.$param);
于 2013-05-19T16:14:14.657 回答
0

我认为您不应该将这些方法放在 app_controller 中。您应该制作另一个控制器并将 getLatestData 和 getTopData 放在那里。然后从元素中使用 $this->requestAction 从视图中调用控制器操作。当然,您还应该使用某种缓存来加快速度。

有些人会说你不应该使用 requestAction 但这里有一篇来自 Cake 开发者的文章:http: //mark-story.com/posts/view/how-using-requestaction-increased-performance-on-my-site

于 2010-12-15T13:33:58.477 回答