Проблема со статической переменной в cakephp - PullRequest
0 голосов
/ 09 марта 2011

У меня есть такой контроллер:

class StudentsController extends AppController {
  var $name = "Student";


  function addstudent() {
    //$id=$_REQUEST['id'];
    //$this->Session->write('id', $id);
    static $count = 0;
    if(!empty($this->data)) {
      $students = $this->Session->read('Student');
      if(!$students) {
        $students = array();
      }
      $students[] = $this->data['Student']; /* data */
      $this->Session->write('Student', $students);
      $this->Session->write('student_count',$count);

      //$this->Session->write('Student',$this->data['Student']);
      //$this->Session->setFlash($this->Session->check('Student'));
      //print_r($this->data);
      //print_r($this -> Session -> read());
      //$this->Session->setFlash('student has been saved.');

      $this->redirect(array('controller'=>'students','action' => 'addstudent'));
    }
  }
}       

После добавления ученика в массив счет увеличивается, и я записываю в переменную число учеников сеанса. Я добавил 3 учеников, и я делаю echo $this->Session->read('student_count'); в поле зрения, но каждый раз получаю 0.

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

1 Ответ

0 голосов
/ 09 марта 2011

Вы никогда не увеличиваете значение $count, а обозначение static не приводит к тому, что переменная сохраняет свое значение в последующих запросах, поскольку PHP не имеет состояния приложения.Вы можете изменить состояние приложения, прочитав и записи в сеансовую переменную, так же, как вы делаете с вашей коллекцией Student.

function addstudent()
{
    if (!$count = $this->Session->read('student_count')) {
        $count = 0;
    }

    /* other operations in your action */

    $count++;
    $this->Session->write('student_count', $count);

    /* remaining bits of your action */
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...