Come si fa ad aggiungere un messaggio sessione dopo session_write_close si chiama?

magento.stackexchange https://magento.stackexchange.com/questions/221

  •  16-10-2019
  •  | 
  •  

Domanda

utilizzare il modulo di eccellente uRapidFlow da Unirgy, ma hanno funzionato in un po 'di un fastidio. Quando si esegue uno dei loro profili, che chiamano session_write_close. Il problema di questo è che significa che se si vuole eseguire un processo da un controller adminhtml non possiamo impostare un messaggio sessione di flash per informare l'utente di successo o eccezioni catturati.

E 'possibile riavviare la sessione dopo che il processo è completo, al fine di aggiungere un messaggio sessione?

I inizialmente non era sicuro se era possibile riavviare una sessione in PHP, ma la prova di concetto PHP funziona:

session_start();
// if this is the second run, show the value
if (!empty($_SESSION['foo'])) {
    echo $_SESSION['foo'], PHP_EOL;
}
// set an initial value
$_SESSION['foo'] = 'bar';

// start running profile
session_write_close();
// after running profile
session_start();
// set a value to see if it takes
$_SESSION['foo'] = 'foo';

non sono stato in grado di impostare correttamente un messaggio flash sulla sessione adminhtml però. Ho pensato che potrei essere in grado di chiamare qualcosa sulla falsariga di:

Mage::getSingleton('adminhtml/session')
    ->init('core', 'adminhtml')
    ->addSuccess('Whoop');

Ma questo non sembra funzionare.

È stato utile?

Soluzione

Questo dovrebbe funzionare:

unset($_SESSION);
Mage::getSingleton('adminhtml/session')
    ->init('core', 'adminhtml')
    ->addSuccess('Whoop');

La sessione non è perso dopo session_write_close(), se si desidera scrivere alla sessione di nuovo si dovrà riaprirlo però. Proof of concept:

<?php
session_start();
// if this is the second run, show the value
if (!empty($_SESSION['foo'])) {
    echo $_SESSION['foo'], PHP_EOL;
}
// set an initial value
$_SESSION['foo'] = 'bar';

// start running profile
session_write_close();

// after running profile
session_start();
var_dump($_SESSION);
//// set a value to see if it takes
$_SESSION['test'] = 'foo';
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a magento.stackexchange
scroll top