Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

TimeSocks's avatar

The mysterious case of the disappearing session

I have a session containing some data that I access throughout several methods in my controller with no trouble. But one method in particular has problems.

I have made a little booking system. On completion of a booking, I call a function to send an e-mail to myself and the customer:

public function complete(Request $request)
    {
        $details = Session::get('details');

        // send emails: call sendConfirmationEmail(to address, using this view)
        $this->sendConfirmationEmail(env('EMAIL'), 'emails.ourconfirmation');
        $this->sendConfirmationEmail($details->booker_email, 'emails.bookerconfirmation');

        return view('booking/complete');
    }

private function sendConfirmationEmail($to,$view)
    {
        $from = env('OFFICE_EMAIL');
        $to_address = $to;

        $details = Session::get('details');
        $instance = Session::get('instance');

        Mail::queue($view, compact(['details','instance']), function($message) use ($to){
            $message->from(env('OFFICE_EMAIL'))
                    ->to($to)
                    ->subject('Thanks for booking');
        });
    }

First I got an error accessing a non-object in my e-mail view. So to test it I just set the sendConfirmationEmail function to return $instance - blank page. Then I tested it by commenting out the function call in complete() and returning $instance there. No problem, there's a nice shiny session full of data. Then I tried passing $instance in the function call to sendConfirmationEmail() and returning it: again, blank page. Why can't sendConfirmationEmail 'see' my session?!

0 likes
0 replies

Please or to participate in this conversation.