Session data sometimes unavailable when displaying error page
Hi,
I am testing my application routes work and checking that my 404 page displays properly. Right now, I am having a problem I don't understand
I have the following routes:
Route::prefix('/')->middleware('web','auth:web','frontend')->name('frontend.')->namespace('FrontEnd')->group(function() {
Route::get('/welcome', 'WelcomeController@index')->name('welcome');
Route::prefix('/self-assessment')->name('self-assessment.')->group(function(){
Route::get('/page1', 'SelfAssessmentPage1Controller@edit')->name('page1.edit');
Route::put('/page1', 'SelfAssessmentPage1Controller@update')->name('page1.update');
Route::get('/page2', 'SelfAssessmentPage2Controller@edit')->name('page2.edit');
Route::put('/page2', 'SelfAssessmentPage2Controller@update')->name('page2.update');
Route::get('/page3', 'SelfAssessmentPage3Controller@edit')->name('page3.edit');
Route::put('/page3', 'SelfAssessmentPage3Controller@update')->name('page3.update');
Route::get('/page4', 'SelfAssessmentPage4Controller@edit')->name('page4.edit');
Route::put('/page4', 'SelfAssessmentPage4Controller@update')->name('page4.update');
Route::get('/completed', 'SelfAssessmentCompletedController@index')->name('completed');
});
...
If I go to any of the following, my 404 page display correctly using some session variable /self-assessment /self-assessment1
but if I go to /self-assessment/page1234 /self-assessment/page1/ABC then the view fails as it cannot find my session variable
My error handler works like this
protected function renderHttpException(HttpExceptionInterface $e)
{
$status = $e->getStatusCode();
list($subdomain) = explode('.', \Request::getHost(), 2);
if ($subdomain != 'www') {
URL::defaults(['UserSubdomain' => $subdomain]);
$viewName = "frontend.errors.".$status;
} else {
$viewName = "admin.errors.".$status;
URL::defaults(['UserSubdomain' => 'www']);
}
if (view()->exists($viewName)) {
return response()->view($viewName, ['exception' => $e], $status, $e->getHeaders());
} else {
return $this->convertExceptionToResponse($e);
}
}
Adding a
dd(Session::all())
in the above function returns [] for /self-assessment/page1234 /self-assessment/page1/ABC
but returns the right set of data for /self-assessment /self-assessment1
Please or to participate in this conversation.