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

8

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

В моем приложении у меня есть два data, 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?

EDIT 2

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

EDIT 3

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

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

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

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

значение не отражено.

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

Ваш Ответ

7   ответов
8

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

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

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

echo $this->Session->read('Person.eyeColor'); // Green
короткий и приятный код и работает для всех версий:) Aditya P Bhatt
0

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

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

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

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

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

У меня есть 2 контроллера, пользователь и форма. Я записываю идентификатор пользователя в переменную сеанса в users_controller. У меня есть файл представления с именем homepage.ctp, действие которого находится в forms_controller. Теперь, как я могу использовать переменную сеанса, определенную в users_controller на домашней странице? Извините, если я задаю глупые вопросы. Я просмотрела альбом с пирожными, но мои сомнения не оправдались. Я также пробую метод кодирования методом проб и ошибок, поэтому, пожалуйста, помогите мне. Angeline
Как я уже говорил, вы можете использовать SessionHelper в своих представлениях. Видеть Book.cakephp.org / просмотр / 484 / Session а также Book.cakephp.org / просмотр / 567 / Методы dr Hannibal Lecter
2

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

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

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

2

В торте php ты можешь создать сессию как это

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

а ты можешь читать значение сеанса, как это

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

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

0

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

0

MODEL:

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

`

0

Доступ вашего помощника SessionHelper вlib/Cake/View/Helper/SessionHelper.php и добавьте метод:

public function write($name = null) {
    return CakeSession::write($name);
}

Похожие вопросы