0

私はウェブサイトを開発しています。ユーザーは、1 つの登録アカウントで車と携帯電話を追加できます。ただし、トップ ヒット (車、携帯電話) の右側と左側のボックスがあり、中央には最近追加された車と携帯電話があります。トップ ヒットを要素に分割します。要素は topCars、topMobiles です。自分の仕事をするために 2 つの関数を作成することを考えていました。将来的には、ソフトウェアや映画などの他のサービスを追加する可能性があるため、両方の機能は汎用的である必要があります。ただし、最初の関数は最近の車や携帯電話などを取得し、それが私のホームページの真ん中に公開されます。2 番目の関数は、(車、携帯電話、映画など) のトップ ヒットを取得する必要があります。私は次のコードを書きました:

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

0

これらのメソッドを app_controller に入れるべきではないと思います。別のコントローラーを作成し、そこに getLatestData と getTopData を配置する必要があります。次に、要素から $this->requestAction を使用して、ビューからコントローラー アクションを呼び出します。もちろん、処理を高速化するために何らかのキャッシュも使用する必要があります。

requestAction を使うべきではないと言う人もいますが、Cake 開発者の 1 人からの記事を次に示します: http://mark-story.com/posts/view/how-using-requestaction-increased-performance-on-my-site

于 2010-12-15T13:33:58.477 に答える