当我从数据库中删除或创建数据时,我会像这样在会话中保存消息
/**
* Function that saves the response to the session
* @param Bool $bResult
* @param $sAction
*/
private function storeResultToSession($bResult, $sAction)
{
Session::forget([
constResponse::SESSION_KEY_RESULT,
constResponse::SESSION_KEY_MESSAGE
]);
$sMessage = '';
switch ($sAction) {
case constCommon::ACTION_CREATE:
$sAction = 'create_slide';
$sMessage = $bResult === constCommon::BOOL_TRUE ? constResponse::SUCCESS_CREATE_SLIDE : constResponse::ERR_CREATING_SLIDE;
break;
case constCommon::ACTION_DELETE:
$sAction = 'delete_slide';
$sMessage = $bResult === constCommon::BOOL_TRUE ? constResponse::SUCCESS_DELETE_SLIDE : constResponse::ERR_DELETE_SLIDE;
break;
default:
break;
}
Session::put([
constResponse::SESSION_KEY_RESULT => $bResult,
constResponse::SESSION_KEY_MESSAGE => $sMessage,
constResponse::SESSION_KEY_ACTION => $sAction,
]);
}
操作成功后,我window.location.href
在前端使用重定向到主页,我将在该主页上烘烤操作的结果。然后使用此方法在页面请求时删除消息
public function getMessageToToast()
{
if (session()->has(constResponse::SESSION_KEY_RESULT) === false && session()->get(constResponse::SESSION_KEY_RESULT) === null) {
return null;
}
$bResult = session()->get(constResponse::SESSION_KEY_RESULT);
$sMsg = session()->get(constResponse::SESSION_KEY_MESSAGE);
$sAction = session()->get(constResponse::SESSION_KEY_ACTION);
Session::forget([
constResponse::SESSION_KEY_RESULT,
constResponse::SESSION_KEY_MESSAGE,
constResponse::SESSION_KEY_ACTION
]);
Session::put([
constResponse::SESSION_KEY_RESULT => null
]);
Session::save();
return [
constResponse::SESSION_KEY_RESULT => $bResult,
constResponse::SESSION_KEY_MESSAGE => $sMsg,
constResponse::SESSION_KEY_ACTION => $sAction
];
}
但是 Session 表现得很奇怪,它只会在 2-3 页面重新加载或重定向后忘记这些项目。