Как мне создавать, записывать и читать данные сеанса в CakePHP?

может ли кто-нибудь дать мне пример того, как создавать сеансы и записывать в них данные. Я видел синтаксис того, как записывать данные в сеанс с помощью команды записи. Но как создать сеанс и получить в нем значения.

В моем приложении есть два данных, form_id и user_id, которые необходимо использовать во всех запросах страниц. Итак, как мне сохранить его как переменную сеанса и использовать во всем приложении?

ИЗМЕНИТЬ

function register()
{
    $userId=$this->User->registerUser($this->data);
    $this->Session->write('User.UserId',$userId);
    //echo "session".$this->Session->read('User.UserId');
    $this->User->data=$this->data;
    if (!$this->User->validates())
    {
    $this->Flash('Please enter valid inputs','/forms' );
      return;   
    }

$this->Flash('User account created','/forms/homepage/'.$userId);            

}   

Как использовать переменную сеанса 'User.UserId' вместо $userId в $this->Flash('Учетная запись пользователя создана','/forms/homepage/'.$userId);

И могу ли я использовать эту переменную во всех моих файлах просмотра, потому что во всех запросах страниц я также передаю идентификатор пользователя?

ИЗМЕНИТЬ 2

У меня есть 2 контроллера, пользователь и форма. Я записываю идентификатор пользователя в переменную сеанса в файле users_controller. У меня есть файл представления с именем homepage.ctp, действие которого находится в form_controller. Как теперь я могу использовать переменную сеанса, определенную в users_controller на главной странице? Извините, если задаю глупые вопросы. Я просмотрел книгу тортов, но мои сомнения не развеялись. Я также пробую метод проб и ошибок, поэтому, пожалуйста, помогите мне.

ИЗМЕНИТЬ 3

У меня есть переменная сеанса «uid», которая является идентификатором пользователя в действии домашней страницы контроллера.

       $this->Session->write('uid',$this->data['Form']['created_by']);

Мне нужна та же переменная в методе действия проектирования того же контроллера. когда я даю

             $uid=$this->Session->read('uid');
            echo "uid: ".$uid;

значение не отображается.

Могу ли я использовать переменную сеанса в том же контроллере?


person Angeline    schedule 07.07.2009    source источник


Ответы (8)


Пекарня — ваш лучший друг:

http://book.cakephp.org/view/398/Methods

Все операции чтения/записи вашего сеанса принадлежат контроллеру:

$this->Session->write('Person.eyeColor', 'Green');

echo $this->Session->read('Person.eyeColor'); // Green
person Mike B    schedule 07.07.2009
comment
короткий и приятный код, работающий для всех версий :) - person Aditya P Bhatt; 07.02.2016

В Cake php вы можете создать такой сеанс

$this->request->session()->write('user_id', 10);

и вы можете прочитать значение сеанса следующим образом

echo $this->request->session()->read('user_id');

Супер просто!

person M.suleman Khan    schedule 21.07.2018

Вам не нужно писать какой-либо код для создания сеанса, они уже встроены. Затем вы просто используете сеансы чтения и записи, как указано выше. Также смотрите здесь для более подробной информации:

http://book.cakephp.org/2.0/en/core-libraries/components/sessions.html Используется в контроллерах

http://book.cakephp.org/2.0/en/core-libraries/helpers/session.html Используется в представлениях

person jimiyash    schedule 07.07.2009

Cakephp 4 пример использования сеанса в контроллерах, представлениях и ячейках

$session = $this->request->getSession();
$session->write('abc', 'apple');
echo $session->read('abc');
person Alimon Karim    schedule 25.06.2020

В этом случае это будет:

$this->Flash('User account created','/forms/homepage/'.$this->Session->read('User.UserId'));

и на ваш второй вопрос ответил Джейсон Мий (http://api.cakephp.org/class/session-helper). Вы можете просто использовать это в своем представлении:

$userId = $session->read('User.UserId');

Медленное и внимательное чтение соответствующих страниц поваренной книги обычно очень помогает...

person dr Hannibal Lecter    schedule 07.07.2009
comment
У меня есть 2 контроллера, пользователь и форма. Я записываю идентификатор пользователя в переменную сеанса в файле users_controller. У меня есть файл представления с именем homepage.ctp, действие которого находится в файле forms_controller. Теперь, как я могу использовать переменную сеанса, определенную в user_controller на домашней странице? Извините, если задаю глупые вопросы. Я просмотрел книгу тортов, но мои сомнения не развеялись. Я также пробую метод проб и ошибок, поэтому, пожалуйста, помогите мне. - person Angeline; 08.07.2009
comment
Как я уже упоминал, вы можете использовать SessionHelper в своих представлениях. См. book.cakephp.org/view/484/Session и book.cakephp.org/view/567/Methods - person dr Hannibal Lecter; 08.07.2009

Я выяснил причину, по которой uid не отображался (отредактируйте 3 часть вопроса). Это из-за глупой ошибки, после закрывающего тега ?> в контроллере был пробел. Теперь он работает нормально.

person Angeline    schedule 20.07.2009

когда у меня странное поведение сеанса, и это мне помогает.

МОДЕЛЬ:

 function clearAllDBCache() {
    $db =& ConnectionManager::getDataSource($this->useDbConfig);
    $db->_queryCache = array();
   }

`

person Andrew    schedule 02.02.2010

Получите доступ к вашему Helper SessionHelper в lib/Cake/View/Helper/SessionHelper.php и добавьте метод:

public function write($name = null) {
    return CakeSession::write($name);
}
person user3549091    schedule 18.04.2014