class SessionTestController in Drupal 9
Same name and namespace in other branches
- 8 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 ContainerInjectionInterface uses LoggerChannelTrait, MessengerTrait, RedirectDestinationTrait, StringTranslationTrait
- class \Drupal\session_test\Controller\SessionTestController
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($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()) ? $this
->t('Flag is absent from session bag') : $this
->t('Flag is present in session bag'));
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
ControllerBase:: |
protected | property | The configuration factory. | |
ControllerBase:: |
protected | property | The current user service. | 1 |
ControllerBase:: |
protected | property | The entity form builder. | |
ControllerBase:: |
protected | property | The entity type manager. | |
ControllerBase:: |
protected | property | The form builder. | 2 |
ControllerBase:: |
protected | property | The key-value storage. | 1 |
ControllerBase:: |
protected | property | The language manager. | 1 |
ControllerBase:: |
protected | property | The module handler. | 2 |
ControllerBase:: |
protected | property | The state service. | |
ControllerBase:: |
protected | function | Returns the requested cache bin. | |
ControllerBase:: |
protected | function | Retrieves a configuration object. | |
ControllerBase:: |
private | function | Returns the service container. | |
ControllerBase:: |
public static | function |
Instantiates a new instance of this class. Overrides ContainerInjectionInterface:: |
46 |
ControllerBase:: |
protected | function | Returns the current user. | 1 |
ControllerBase:: |
protected | function | Retrieves the entity form builder. | |
ControllerBase:: |
protected | function | Retrieves the entity type manager. | |
ControllerBase:: |
protected | function | Returns the form builder service. | 2 |
ControllerBase:: |
protected | function | Returns a key/value storage collection. | 1 |
ControllerBase:: |
protected | function | Returns the language manager service. | 1 |
ControllerBase:: |
protected | function | Returns the module handler. | 2 |
ControllerBase:: |
protected | function | Returns a redirect response object for the specified route. | |
ControllerBase:: |
protected | function | Returns the state storage service. | |
LoggerChannelTrait:: |
protected | property | The logger channel factory service. | |
LoggerChannelTrait:: |
protected | function | Gets the logger for a specific channel. | |
LoggerChannelTrait:: |
public | function | Injects the logger channel factory. | |
MessengerTrait:: |
protected | property | The messenger. | 27 |
MessengerTrait:: |
public | function | Gets the messenger. | 27 |
MessengerTrait:: |
public | function | Sets the messenger. | |
RedirectDestinationTrait:: |
protected | property | The redirect destination service. | 1 |
RedirectDestinationTrait:: |
protected | function | Prepares a 'destination' URL query parameter for use with \Drupal\Core\Url. | |
RedirectDestinationTrait:: |
protected | function | Returns the redirect destination service. | |
RedirectDestinationTrait:: |
public | function | Sets the redirect destination service. | |
SessionTestController:: |
public | function | Clears the test flag from the session test bag. | |
SessionTestController:: |
public | function | Prints the stored session value to the screen. | |
SessionTestController:: |
public | function | Prints the stored session value to the screen. | |
SessionTestController:: |
public | function | Print the current session ID. | |
SessionTestController:: |
public | function | Print the current session ID as read from the cookie. | |
SessionTestController:: |
public | function | Returns the values stored in the active session and the user ID. | |
SessionTestController:: |
public | function | Prints a message if the flag in the session bag is set. | |
SessionTestController:: |
public | function | Only available if current user is logged in. | |
SessionTestController:: |
public | function | Turns off session saving and then tries to save a value anyway. | |
SessionTestController:: |
public | function | Stores a value in $_SESSION['session_test_value']. | |
SessionTestController:: |
public | function | Sets a message to me displayed on the following page. | |
SessionTestController:: |
public | function | Sets a message but call drupal_save_session(FALSE). | |
SessionTestController:: |
public | function | Sets a test value on the session. | |
SessionTestController:: |
public | function | Sets the test flag in the session test bag. | |
SessionTestController:: |
public | function | Returns the trace recorded by test proxy session handlers as JSON. | |
StringTranslationTrait:: |
protected | property | The string translation service. | 4 |
StringTranslationTrait:: |
protected | function | Formats a string containing a count of items. | |
StringTranslationTrait:: |
protected | function | Returns the number of plurals supported by a given language. | |
StringTranslationTrait:: |
protected | function | Gets the string translation service. | |
StringTranslationTrait:: |
public | function | Sets the string translation service to use. | 2 |
StringTranslationTrait:: |
protected | function | Translates a string to the current language or to a given language. |