Как вызвать функцию в app_controller в моих элементах - PullRequest
0 голосов
/ 15 декабря 2010

Я занимаюсь разработкой сайта;которые пользователи могут добавлять автомобили и мобильные телефоны с одной учетной записью.Тем не менее, у меня есть справа и слева ящики для лучших хитов (автомобили, мобильные телефоны), а в середине у меня есть недавно добавленные автомобили и мобильные телефоны.Я разделил верхние попадания на элементы, и это элементы topCars, topMobile. Я думал написать две функции, чтобы делать мои вещи.Обе функции должны быть общими, потому что в будущем мы могли бы добавить некоторые другие сервисы, такие как программное обеспечение или фильмы.Тем не менее, первая функция получит последние автомобили, мобильные телефоны и т. Д., И эта информация будет опубликована в середине моей домашней страницы.Вторая функция должна получить лучшие хиты для (автомобили, мобильные телефоны, фильмы .... и т. Д.).Я написал следующий код:

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

Мой код отлично работает для последних добавленных элементов, но когда я пытаюсь получить верхние попадания, он возвращает ошибку.Пожалуйста, помогите мне узнать, как это работает. Спасибо

Ответы [ 3 ]

1 голос
/ 19 мая 2013
$this->requestAction('App/getTopData/'.$param);
0 голосов
/ 16 декабря 2010

Спасибо, ребята, это работает Я нашел другую статью, это может быть полезно для других начинающих тортов, как мой http://bakery.cakephp.org/articles/gwoo/2007/04/12/creating-reusable-elements-with-requestaction

0 голосов
/ 15 декабря 2010

Я думаю, вы не должны помещать эти методы в app_controller. Вы должны сделать другой контроллер и поместить туда getLatestData и getTopData. Затем из элемента используйте $ this-> requestAction для вызова действия контроллера из представления. Конечно, вы также должны использовать какое-то кэширование для ускорения процесса.

Некоторые люди скажут, что вы не должны использовать requestAction, но вот статья одного из разработчиков Cake: http://mark -story.com / сообщения / просмотр / как-используя-requestaction-увеличенная производительность на моем сайте

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...