class SessionTestController
Same name in other branches
- 9 core/modules/system/tests/modules/session_test/src/Controller/SessionTestController.php \Drupal\session_test\Controller\SessionTestController
- 8.9.x core/modules/system/tests/modules/session_test/src/Controller/SessionTestController.php \Drupal\session_test\Controller\SessionTestController
- 11.x core/modules/system/tests/modules/session_test/src/Controller/SessionTestController.php \Drupal\session_test\Controller\SessionTestController
Controller providing page callbacks for the action admin interface.
Hierarchy
- class \Drupal\Core\Controller\ControllerBase implements \Drupal\Core\DependencyInjection\ContainerInjectionInterface uses \Drupal\Core\DependencyInjection\AutowireTrait, \Drupal\Core\Logger\LoggerChannelTrait, \Drupal\Core\Messenger\MessengerTrait, \Drupal\Core\Routing\RedirectDestinationTrait, \Drupal\Core\StringTranslation\StringTranslationTrait
- class \Drupal\session_test\Controller\SessionTestController extends \Drupal\Core\Controller\ControllerBase
Expanded class hierarchy of SessionTestController
File
-
core/
modules/ system/ tests/ modules/ session_test/ src/ Controller/ SessionTestController.php, line 14
Namespace
Drupal\session_test\ControllerView source
class SessionTestController extends ControllerBase {
/**
* Prints the stored session value to the screen.
*
* @return string
* A notification message.
*/
public function get() {
return empty($_SESSION['session_test_value']) ? [] : [
'#markup' => $this->t('The current value of the stored session variable is: %val', [
'%val' => $_SESSION['session_test_value'],
]),
];
}
/**
* Prints the stored session value to the screen.
*
* @param \Symfony\Component\HttpFoundation\Request $request
* The incoming request.
*
* @return string
* A notification message.
*/
public function getFromSessionObject(Request $request) {
$value = $request->getSession()
->get("session_test_key");
return empty($value) ? [] : [
'#markup' => $this->t('The current value of the stored session variable is: %val', [
'%val' => $value,
]),
];
}
/**
* Print the current session ID.
*
* @param \Symfony\Component\HttpFoundation\Request $request
* The incoming request.
*
* @return string
* A notification message with session ID.
*/
public function getId(Request $request) {
// Set a value in $_SESSION, so that SessionManager::save() will start
// a session.
$_SESSION['test'] = 'test';
$request->getSession()
->save();
return [
'#markup' => 'session_id:' . session_id() . "\n",
];
}
/**
* Print the current session ID as read from the cookie.
*
* @param \Symfony\Component\HttpFoundation\Request $request
* The request object.
*
* @return string
* A notification message with session ID.
*/
public function getIdFromCookie(Request $request) {
return [
'#markup' => 'session_id:' . $request->cookies
->get(session_name()) . "\n",
'#cache' => [
'contexts' => [
'cookies:' . session_name(),
],
],
];
}
/**
* Stores a value in $_SESSION['session_test_value'].
*
* @param string $test_value
* A session value.
*
* @return string
* A notification message.
*/
public function set($test_value) {
$_SESSION['session_test_value'] = $test_value;
return [
'#markup' => $this->t('The current value of the stored session variable has been set to %val', [
'%val' => $test_value,
]),
];
}
/**
* Turns off session saving and then tries to save a value anyway.
*
* @param string $test_value
* A session value.
*
* @return string
* A notification message.
*/
public function noSet($test_value) {
\Drupal::service('session_handler.write_safe')->setSessionWritable(FALSE);
$this->set($test_value);
return [
'#markup' => $this->t('session saving was disabled, and then %val was set', [
'%val' => $test_value,
]),
];
}
/**
* Sets a message to me displayed on the following page.
*
* @return string
* A notification message.
*/
public function setMessage() {
$this->messenger()
->addStatus($this->t('This is a dummy message.'));
return new Response((string) $this->t('A message was set.'));
// Do not return anything, so the current request does not result in a themed
// page with messages. The message will be displayed in the following request
// instead.
}
/**
* Sets a message but call drupal_save_session(FALSE).
*
* @return string
* A notification message.
*/
public function setMessageButDoNotSave() {
\Drupal::service('session_handler.write_safe')->setSessionWritable(FALSE);
$this->setMessage();
return [
'#markup' => '',
];
}
/**
* Only available if current user is logged in.
*
* @return string
* A notification message.
*/
public function isLoggedIn() {
return [
'#markup' => $this->t('User is logged in.'),
];
}
/**
* Returns the trace recorded by test proxy session handlers as JSON.
*
* @param \Symfony\Component\HttpFoundation\Request $request
* The incoming request.
*
* @return \Symfony\Component\HttpFoundation\JsonResponse
* The response.
*/
public function traceHandler(Request $request) {
// Start a session if necessary, set a value and then save and close it.
$request->getSession()
->start();
if (empty($_SESSION['trace-handler'])) {
$_SESSION['trace-handler'] = 1;
}
else {
$_SESSION['trace-handler']++;
}
$request->getSession()
->save();
// Collect traces and return them in JSON format.
$trace = \Drupal::service('session_test.session_handler_proxy_trace')->getArrayCopy();
return new JsonResponse($trace);
}
/**
* Returns the values stored in the active session and the user ID.
*
* @param \Symfony\Component\HttpFoundation\Request $request
* The request object.
*
* @return \Symfony\Component\HttpFoundation\JsonResponse
* A response object containing the session values and the user ID.
*/
public function getSession(Request $request) {
return new JsonResponse([
'session' => $request->getSession()
->all(),
'user' => $this->currentUser()
->id(),
]);
}
/**
* Sets a test value on the session.
*
* @param \Symfony\Component\HttpFoundation\Request $request
* The request object.
* @param string $test_value
* A value to set on the session.
*
* @return \Symfony\Component\HttpFoundation\JsonResponse
* A response object containing the session values and the user ID.
*/
public function setSession(Request $request, $test_value) {
$session = $request->getSession();
$session->set('test_value', $test_value);
return new JsonResponse([
'session' => $session->all(),
'user' => $this->currentUser()
->id(),
]);
}
/**
* Sets the test flag in the session test bag.
*
* @param \Symfony\Component\HttpFoundation\Request $request
* The request object.
*
* @return \Symfony\Component\HttpFoundation\Response
* The response object.
*/
public function setSessionBagFlag(Request $request) {
/** @var \Drupal\session_test\Session\TestSessionBag */
$bag = $request->getSession()
->getBag(TestSessionBag::BAG_NAME);
$bag->setFlag();
return new Response();
}
/**
* Clears the test flag from the session test bag.
*
* @param \Symfony\Component\HttpFoundation\Request $request
* The request object.
*
* @return \Symfony\Component\HttpFoundation\Response
* The response object.
*/
public function clearSessionBagFlag(Request $request) {
/** @var \Drupal\session_test\Session\TestSessionBag */
$bag = $request->getSession()
->getBag(TestSessionBag::BAG_NAME);
$bag->clearFlag();
return new Response();
}
/**
* Prints a message if the flag in the session bag is set.
*
* @param \Symfony\Component\HttpFoundation\Request $request
* The request object.
*
* @return \Symfony\Component\HttpFoundation\Response
* The response object.
*/
public function hasSessionBagFlag(Request $request) {
/** @var \Drupal\session_test\Session\TestSessionBag */
$bag = $request->getSession()
->getBag(TestSessionBag::BAG_NAME);
return new Response(empty($bag->hasFlag()) ? (string) $this->t('Flag is absent from session bag') : (string) $this->t('Flag is present in session bag'));
}
/**
* Trigger an exception when the session is written.
*
* @param \Symfony\Component\HttpFoundation\Request $request
* The request object.
*/
public function triggerWriteException(Request $request) {
$session = $request->getSession();
$session->set('test_value', 'Ensure session contains some data');
// Move sessions table out of the way.
$schema = \Drupal::database()->schema();
$schema->renameTable('sessions', 'sessions_tmp');
// There needs to be a session table, otherwise
// InstallerRedirectTrait::shouldRedirectToInstaller() will instruct the
// handleException::handleException to redirect to the installer.
$schema->createTable('sessions', [
'description' => "Fake sessions table missing some columns.",
'fields' => [
'sid' => [
'description' => "A fake session ID column.",
'type' => 'varchar_ascii',
'length' => 128,
'not null' => TRUE,
],
],
'primary key' => [
'sid',
],
]);
drupal_register_shutdown_function(function () {
$schema = \Drupal::database()->schema();
$schema->dropTable('sessions');
$schema->renameTable('sessions_tmp', 'sessions');
});
return new Response();
}
}
Members
Title Sort descending | Modifiers | Object type | Summary | Overrides |
---|---|---|---|---|
AutowireTrait::create | public static | function | Instantiates a new instance of the implementing class using autowiring. | 33 |
ControllerBase::$configFactory | protected | property | The configuration factory. | |
ControllerBase::$currentUser | protected | property | The current user service. | 2 |
ControllerBase::$entityFormBuilder | protected | property | The entity form builder. | |
ControllerBase::$entityTypeManager | protected | property | The entity type manager. | |
ControllerBase::$formBuilder | protected | property | The form builder. | 1 |
ControllerBase::$keyValue | protected | property | The key-value storage. | 1 |
ControllerBase::$languageManager | protected | property | The language manager. | 1 |
ControllerBase::$moduleHandler | protected | property | The module handler. | 1 |
ControllerBase::$stateService | protected | property | The state service. | |
ControllerBase::cache | protected | function | Returns the requested cache bin. | |
ControllerBase::config | protected | function | Retrieves a configuration object. | |
ControllerBase::container | private | function | Returns the service container. | |
ControllerBase::currentUser | protected | function | Returns the current user. | 2 |
ControllerBase::entityFormBuilder | protected | function | Retrieves the entity form builder. | |
ControllerBase::entityTypeManager | protected | function | Retrieves the entity type manager. | |
ControllerBase::formBuilder | protected | function | Returns the form builder service. | 1 |
ControllerBase::keyValue | protected | function | Returns a key/value storage collection. | 1 |
ControllerBase::languageManager | protected | function | Returns the language manager service. | 1 |
ControllerBase::moduleHandler | protected | function | Returns the module handler. | 1 |
ControllerBase::redirect | protected | function | Returns a redirect response object for the specified route. | |
ControllerBase::state | protected | function | Returns the state storage service. | |
LoggerChannelTrait::$loggerFactory | protected | property | The logger channel factory service. | |
LoggerChannelTrait::getLogger | protected | function | Gets the logger for a specific channel. | |
LoggerChannelTrait::setLoggerFactory | public | function | Injects the logger channel factory. | |
MessengerTrait::$messenger | protected | property | The messenger. | 16 |
MessengerTrait::messenger | public | function | Gets the messenger. | 16 |
MessengerTrait::setMessenger | public | function | Sets the messenger. | |
RedirectDestinationTrait::$redirectDestination | protected | property | The redirect destination service. | 2 |
RedirectDestinationTrait::getDestinationArray | protected | function | Prepares a 'destination' URL query parameter for use with \Drupal\Core\Url. | |
RedirectDestinationTrait::getRedirectDestination | protected | function | Returns the redirect destination service. | |
RedirectDestinationTrait::setRedirectDestination | public | function | Sets the redirect destination service. | |
SessionTestController::clearSessionBagFlag | public | function | Clears the test flag from the session test bag. | |
SessionTestController::get | public | function | Prints the stored session value to the screen. | |
SessionTestController::getFromSessionObject | public | function | Prints the stored session value to the screen. | |
SessionTestController::getId | public | function | Print the current session ID. | |
SessionTestController::getIdFromCookie | public | function | Print the current session ID as read from the cookie. | |
SessionTestController::getSession | public | function | Returns the values stored in the active session and the user ID. | |
SessionTestController::hasSessionBagFlag | public | function | Prints a message if the flag in the session bag is set. | |
SessionTestController::isLoggedIn | public | function | Only available if current user is logged in. | |
SessionTestController::noSet | public | function | Turns off session saving and then tries to save a value anyway. | |
SessionTestController::set | public | function | Stores a value in $_SESSION['session_test_value']. | |
SessionTestController::setMessage | public | function | Sets a message to me displayed on the following page. | |
SessionTestController::setMessageButDoNotSave | public | function | Sets a message but call drupal_save_session(FALSE). | |
SessionTestController::setSession | public | function | Sets a test value on the session. | |
SessionTestController::setSessionBagFlag | public | function | Sets the test flag in the session test bag. | |
SessionTestController::traceHandler | public | function | Returns the trace recorded by test proxy session handlers as JSON. | |
SessionTestController::triggerWriteException | public | function | Trigger an exception when the session is written. | |
StringTranslationTrait::$stringTranslation | protected | property | The string translation service. | 3 |
StringTranslationTrait::formatPlural | protected | function | Formats a string containing a count of items. | |
StringTranslationTrait::getNumberOfPlurals | protected | function | Returns the number of plurals supported by a given language. | |
StringTranslationTrait::getStringTranslation | protected | function | Gets the string translation service. | |
StringTranslationTrait::setStringTranslation | public | function | Sets the string translation service to use. | 2 |
StringTranslationTrait::t | protected | function | Translates a string to the current language or to a given language. |
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.