session_write_close가 호출 된 후 어떻게 세션 메시지를 추가합니까?


9

우리는 Unirgy의 우수한 uRapidFlow 모듈을 사용하지만 약간의 성가신 문제가 발생했습니다. 프로필 중 하나를 실행하면을 호출 session_write_close합니다. 이것의 문제는 adminhtml 컨트롤러에서 프로세스를 실행하려는 경우 사용자에게 성공 또는 예외가 있음을 알리기 위해 세션 플래시 메시지를 설정할 수 없다는 것을 의미합니다.

세션 메시지를 추가하기 위해 프로세스가 완료된 후 세션을 다시 시작할 수 있습니까?

처음에는 PHP에서 세션을 다시 시작할 수 있는지 확실하지 않았지만 개념 증명 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();
// set a value to see if it takes
$_SESSION['foo'] = 'foo';

그래도 adminhtml 세션에서 플래시 메시지를 올바르게 설정할 수 없었습니다. 나는 다음 줄을 따라 뭔가를 부를 수 있다고 생각했다.

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

그러나 이것은 작동하지 않는 것 같습니다.


프로파일 실행 중에 고객에게 메시지를 표시하려면 $ pofile-> getLogger ()를 사용하여 로거 인스턴스를 가져 와서 메시지를 전달하십시오. 그것은 페이지에 그것들을 보여주는 것과 같지 않지만, 당신은 그것들을 기록 할 것입니다
Petar Dzhambazov

답변:


4

이것은 작동해야합니다 :

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

세션은 세션 이후 session_write_close()에 손실되지 않습니다 . 세션에 다시 쓰려면 세션을 다시 열어야합니다. 개념의 증거:

<?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';

세션에서 init를 호출하면 session_start가 호출되도록 트리거되지 않습니다. 이는 $ _SESSION이 설정되지 않은 경우에만 호출되기 때문입니다 (호출 후인 것 같습니다 session_write_close).
Peter O'Callaghan

이 작업에 관심이있는 사람이라면 올바르게 작동 시키려면해야합니다 unset($_SESSION). 이렇게 init하면 세션이 올바르게 다시로드됩니다.
피터 오캘 라간

@Cags 답변을 업데이트했습니다. 정확한지 확인할 수 있습니까?
Rick Kuipers

그것이의 일환으로 호출되는 것처럼으로 session_start가 필요하지 않습니다 init메서드 호출 (물론에 start있는라고합니다 init). 그 외에는 작동해야합니다.
피터 오캘 라간

@Cags 감사합니다. 답변을 업데이트했습니다! 의견을 보내 주셔서 감사합니다 :)
Rick Kuipers
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.