Session not recognized globally


#1

I have got a basic slim application with a session_start() in the index.php.

I gave $_SESSION a value in a class called Validator.php :

class Validator
{
    
    protected $errors;

    public function validate($request, array $rules)
    {
        // filled $errors with data

        $_SESSION['errors'] = $this->errors;

        return $this;
    }

    public function failed() {
        return !empty($this->errors);
    }
}

In another class, I set that variable globally to work inside twig template :

class ValidationErrorsMiddleware extends Middleware
{
    
    protected $container;

    public function __invoke($request, $response, $next) {

        $twig = $this->container->view->getEnvironment();
        $twig->addGlobal('errors', $_SESSION['errors']);
        
        $response = $next($request, $response);
        return $response;
    }
}

And finally, calling the session variable in my Controller :

class AuthController extends Controller {

    public function getSignUp($request, $response)
    {
        // Render index view
    
    }

    public function postSignUp($request, $response)
    {
        $validation = $this->container->validator->validate($request, [
            'email' => v::email()->notEmpty(),
            'name' => v::notEmpty()->alpha(),
            'password' => v::NoWhitespace()->notEmpty(),         
        ]);
        var_dump($_SESSION); // no result
        var_dump($validation); //no result
        if($validation->failed()) {
            return $response->withRedirect($this->container->router->pathFor('auth.signup')); 
        }

        $user = User::create([
            'email' => $request->getParam('email'),
            'firstName' => $request->getParam('fname'),
            'lastName' => $request->getParam('lname'),
            'password' => password_hash($request->getParam('password'), PASSWORD_DEFAULT),
            'firstLogin' => '1',
        ]);

       return $response->withRedirect($this->container->router->pathFor('home')); 

    }

}

Inside my Controller, the $_SESSION variable is always null, as if it didn’t have any values inside of it. A var_dump of anything doesn’t work there. But there apparently IS values insinde the session variable as when I var dumb it in my index.php there are results showing up… I’m confused, what am I missing?


#2

when do you start the session in your index.php?