What is the difference between Drupal::request()->getSession() and...





.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ margin-bottom:0;
}







2















As the title suggests, I'm a bit confused about those two methods of creating and accessing a session on Drupal 8. I'm not quite sure when to use the one over the other, could someone point me to the right direction?



My issue started after a Drupal update, where originally I was using this way to start a session for anonymous users on my module:



$request       = Drupal::request();
$this->session = $request->getSession();

$session = $this->session->get('mymodule');


After the update, the above code won't create a session for anonymous user and the only way to make it work was this piece of code:



$tempstore = Drupal::service('user.private_tempstore')->get('mymodule_name');
$tempstore->set('my_variable_name', ['test var' => 'this is my value']);

echo '<pre>';
print_r($tempstore->get('my_variable_name'));
echo '</pre>';


So, even though I've managed to make it work, I'm not quite sure why it did work that way.










share|improve this question





























    2















    As the title suggests, I'm a bit confused about those two methods of creating and accessing a session on Drupal 8. I'm not quite sure when to use the one over the other, could someone point me to the right direction?



    My issue started after a Drupal update, where originally I was using this way to start a session for anonymous users on my module:



    $request       = Drupal::request();
    $this->session = $request->getSession();

    $session = $this->session->get('mymodule');


    After the update, the above code won't create a session for anonymous user and the only way to make it work was this piece of code:



    $tempstore = Drupal::service('user.private_tempstore')->get('mymodule_name');
    $tempstore->set('my_variable_name', ['test var' => 'this is my value']);

    echo '<pre>';
    print_r($tempstore->get('my_variable_name'));
    echo '</pre>';


    So, even though I've managed to make it work, I'm not quite sure why it did work that way.










    share|improve this question

























      2












      2








      2


      1






      As the title suggests, I'm a bit confused about those two methods of creating and accessing a session on Drupal 8. I'm not quite sure when to use the one over the other, could someone point me to the right direction?



      My issue started after a Drupal update, where originally I was using this way to start a session for anonymous users on my module:



      $request       = Drupal::request();
      $this->session = $request->getSession();

      $session = $this->session->get('mymodule');


      After the update, the above code won't create a session for anonymous user and the only way to make it work was this piece of code:



      $tempstore = Drupal::service('user.private_tempstore')->get('mymodule_name');
      $tempstore->set('my_variable_name', ['test var' => 'this is my value']);

      echo '<pre>';
      print_r($tempstore->get('my_variable_name'));
      echo '</pre>';


      So, even though I've managed to make it work, I'm not quite sure why it did work that way.










      share|improve this question














      As the title suggests, I'm a bit confused about those two methods of creating and accessing a session on Drupal 8. I'm not quite sure when to use the one over the other, could someone point me to the right direction?



      My issue started after a Drupal update, where originally I was using this way to start a session for anonymous users on my module:



      $request       = Drupal::request();
      $this->session = $request->getSession();

      $session = $this->session->get('mymodule');


      After the update, the above code won't create a session for anonymous user and the only way to make it work was this piece of code:



      $tempstore = Drupal::service('user.private_tempstore')->get('mymodule_name');
      $tempstore->set('my_variable_name', ['test var' => 'this is my value']);

      echo '<pre>';
      print_r($tempstore->get('my_variable_name'));
      echo '</pre>';


      So, even though I've managed to make it work, I'm not quite sure why it did work that way.







      8 services sessions






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked 16 hours ago









      SpirosSpiros

      235




      235






















          1 Answer
          1






          active

          oldest

          votes


















          3














          The main difference is that session data is stored in the database table sessions and PrivateTempStore in key_value_expire. Session data is preloaded in memory, private tempstore data only when requested. Session data is for small amount of data not exceeding a few megabytes, private tempstore for bigger chunks of data you don't want to have in memory when not needed.



          What you've posted is not starting a session, it gets a value. You would need to set a value first to start a session.






          share|improve this answer
























          • Yeah, my bad, it is setting the session in another controller, I just wanted to demonstrate the methods that I'm using. Also, I've found this article for a more detailed explanation: palantir.net/blog/d8ftw-storing-data-drupal-8

            – Spiros
            13 hours ago












          Your Answer








          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "220"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: false,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: null,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });














          draft saved

          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fdrupal.stackexchange.com%2fquestions%2f278686%2fwhat-is-the-difference-between-drupalrequest-getsession-and-drupalser%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          3














          The main difference is that session data is stored in the database table sessions and PrivateTempStore in key_value_expire. Session data is preloaded in memory, private tempstore data only when requested. Session data is for small amount of data not exceeding a few megabytes, private tempstore for bigger chunks of data you don't want to have in memory when not needed.



          What you've posted is not starting a session, it gets a value. You would need to set a value first to start a session.






          share|improve this answer
























          • Yeah, my bad, it is setting the session in another controller, I just wanted to demonstrate the methods that I'm using. Also, I've found this article for a more detailed explanation: palantir.net/blog/d8ftw-storing-data-drupal-8

            – Spiros
            13 hours ago
















          3














          The main difference is that session data is stored in the database table sessions and PrivateTempStore in key_value_expire. Session data is preloaded in memory, private tempstore data only when requested. Session data is for small amount of data not exceeding a few megabytes, private tempstore for bigger chunks of data you don't want to have in memory when not needed.



          What you've posted is not starting a session, it gets a value. You would need to set a value first to start a session.






          share|improve this answer
























          • Yeah, my bad, it is setting the session in another controller, I just wanted to demonstrate the methods that I'm using. Also, I've found this article for a more detailed explanation: palantir.net/blog/d8ftw-storing-data-drupal-8

            – Spiros
            13 hours ago














          3












          3








          3







          The main difference is that session data is stored in the database table sessions and PrivateTempStore in key_value_expire. Session data is preloaded in memory, private tempstore data only when requested. Session data is for small amount of data not exceeding a few megabytes, private tempstore for bigger chunks of data you don't want to have in memory when not needed.



          What you've posted is not starting a session, it gets a value. You would need to set a value first to start a session.






          share|improve this answer













          The main difference is that session data is stored in the database table sessions and PrivateTempStore in key_value_expire. Session data is preloaded in memory, private tempstore data only when requested. Session data is for small amount of data not exceeding a few megabytes, private tempstore for bigger chunks of data you don't want to have in memory when not needed.



          What you've posted is not starting a session, it gets a value. You would need to set a value first to start a session.







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered 15 hours ago









          4k44k4

          53k561104




          53k561104













          • Yeah, my bad, it is setting the session in another controller, I just wanted to demonstrate the methods that I'm using. Also, I've found this article for a more detailed explanation: palantir.net/blog/d8ftw-storing-data-drupal-8

            – Spiros
            13 hours ago



















          • Yeah, my bad, it is setting the session in another controller, I just wanted to demonstrate the methods that I'm using. Also, I've found this article for a more detailed explanation: palantir.net/blog/d8ftw-storing-data-drupal-8

            – Spiros
            13 hours ago

















          Yeah, my bad, it is setting the session in another controller, I just wanted to demonstrate the methods that I'm using. Also, I've found this article for a more detailed explanation: palantir.net/blog/d8ftw-storing-data-drupal-8

          – Spiros
          13 hours ago





          Yeah, my bad, it is setting the session in another controller, I just wanted to demonstrate the methods that I'm using. Also, I've found this article for a more detailed explanation: palantir.net/blog/d8ftw-storing-data-drupal-8

          – Spiros
          13 hours ago


















          draft saved

          draft discarded




















































          Thanks for contributing an answer to Drupal Answers!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fdrupal.stackexchange.com%2fquestions%2f278686%2fwhat-is-the-difference-between-drupalrequest-getsession-and-drupalser%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          A CLEAN and SIMPLE way to add appendices to Table of Contents and bookmarks

          Calculate evaluation metrics using cross_val_predict sklearn

          Insert data from modal to MySQL (multiple modal on website)