Подсчет всех записей в таблице

#symfony-1.4

#symfony-1.4

Вопрос:

Мне нужно подсчитать все записи в одной таблице, так что..В моем действии

 public function executeTesting(sfWebrequest $r) 
{
$this->applicants = Doctrine_core::getTable('Applicants')->count();
$this->setLayout(false);
}
 

и я могу отобразить записи в шаблоне
testingSucess.php

  <?php echo $applicants ?>//returns number of records example 890
 

Но я хочу, чтобы это отображалось в других шаблонах.Допустим, я хочу «встроить» в другой шаблон (failureSuccess.php ).Есть предложения?

Ответ №1:

Вы можете рассмотреть возможность использования вызова AJAX и внести небольшие изменения в свой код, чтобы избежать использования шаблона.
Итак, давайте изменим ваше действие на это:

 class miscActions extends sfActions
{
  public function executeTotal(sfWebRequest $request)
  {
    $total = Doctrine::getTable('Utenti')->findAll()->count();

    return $this->renderText(json_encode(array('total' => $total)));
  }
}
 

И теперь вы можете получить это значение в шаблоне, например, с помощью jQuery:

 <script type="text/javascript">

  $.ajax({
    url: '<?php echo url_for("misc/total") ?>',
    dataType: 'json',
    success: function(data){
      console.log(JSON.stringify(data));
      console.log("Total: "   data.total);

      // And if you want to update a div content
      $("#responsecontainer").html(data.total);
    }
  });

</script>
 

Комментарии:

1. можете ли вы показать полный пример кода? Я мало разбираюсь в json и jQuery. Мой модуль — «разное», а действие — «общее». Я попробовал url: ‘<?php echo url_for(‘misc / total’)?>, тип: «json», успех: функция (данные){ // внутри data.total у вас есть значение $(«#responsecontainer»).data(total); } и в моемшаблоны <идентификатор div =»responsecontaner»><div>

2. @ilSalvo ты такой милый. Продолжайте в том же духе

Ответ №2:

Понял..Просто удалите действие и создайте вместо него помощника, поэтому в моем lib/helper/TotalHelper.php

 <?php

 function getTotal() {
$applicants = Doctrine_core::getTable('Applicants')->count();

    return $applicants;
}
 

и в шаблоне (failureSuccess.php )

 <?php use_helper('Total') ?>
<?php echo getTotal() ?>
 

Так удобно..

Комментарии:

1. Вспомогательные функции не предназначены для выполнения каких-либо запросов к БД. Если вам нужна часть в разных шаблонах, вы должны либо включить ее во все свои действия, либо создать компонент, который сделает запрос к БД и отобразит его должным образом.