Переменная сеанса не печатается в представлении Codeigniter 4 - PullRequest
2 голосов
/ 12 апреля 2020

в codeigniter 4 Я попытался напечатать переменную сеанса, используя $session->get('item'); и $session->item также, но, к сожалению, он не печатает. Но те же переменные печатаются с использованием глобальной переменной $_SESSION. Может ли кто-нибудь один руководство, как печатать в поле зрения, используя $session->get('item'); или $session->item.

Переменные сеанса печатаются в контроллере обоими способами $session->get('item'); и $session->item.

1 Ответ

2 голосов
/ 15 апреля 2020

Это интересная топи c.

Вот код, который я использовал для проверки этого ...

Я угнал контроллер по умолчанию Home * app / Controllers / Home . php

protected $session;
public function index()
{
    $this->session = \Config\Services::session();
    $this->session->set('view_data','Hi there I am from the session');

    $page['view_data'] =$this->session->get('view_data'); // Normal way
    $page['session'] =$this->session;                     // Pass in the object

    echo view('test_session_view',$page);

}

Затем я создал небольшой тестовый файл, чтобы посмотреть, что будет работать ...

app / views / test_session_view. php

<?php
    $local_session = \Config\Services::session(); // Needed for Point 5
?>
<h1>Test_Session_View.php</h1>
<h2>1. Passed in as normal view variable : <?= $view_data; ?></h2>
<h2>2. Passed in as the Session Object : <?= $session->get('view_data'); ?></h2>
<h2>3. The Ole Fashioned SESSION Global way: <?= $_SESSION['view_data']; ?></h2>
<h2>4. The Helper Way: <?= session('view_data'); ?></h2>
<h2>5. The local instance: <?= $local_session->get('view_data'); ?></h2>

По умолчанию $ session (в моем случае $ this-> session) не является «глобальным», и поэтому он должен подчиняться тем же правилам, что и любая другая переменная, передаваемая в View.

Конечно, как вы заметили, $ _SESSION напрямую доступен, поскольку он ГЛОБАЛЬНЫЙ.

А помощник сеанса (Точка 4) дает нам еще более простой доступ, как вы обнаружили.

Это привело к пункту 5, который делает помощник сеанса. Он создает экземпляр сеанса и выполняет «get». Это в System \ Common. php Строка 877 i sh сессия функции (строка $ val = null)

Так что есть несколько способов может получить доступ к данным сеанса в представлении.

...