Reset the static menu system variables before a subrequest.
parent
71e0447b50
commit
3edf21c28f
|
@ -104,6 +104,22 @@ class ExceptionController {
|
|||
|
||||
$subrequest = Request::create('/' . $path, 'get', array('destination' => $system_path), $request->cookies->all(), array(), $request->server->all());
|
||||
|
||||
// The active trail is being statically cached from the parent request to
|
||||
// the subrequest, like any other static. Unfortunately that means the
|
||||
// data in it is incorrect and does not get regenerated correctly for
|
||||
// the subrequest. In this instance, that even causes a fatal error in
|
||||
// some circumstances because menu_get_active_trail() ends up having
|
||||
// a missing localized_options value. To work around that, reset the
|
||||
// menu static variables and let them be regenerated as needed.
|
||||
// @todo It is likely that there are other such statics that need to be
|
||||
// reset that are not triggering test failures right now. If found,
|
||||
// add them here.
|
||||
// @todo Refactor the breadcrumb system so that it does not rely on static
|
||||
// variables in the first place, which will eliminate the need for this
|
||||
// hack.
|
||||
drupal_static_reset('menu_set_active_trail');
|
||||
menu_reset_static_cache();
|
||||
|
||||
$response = $this->kernel->handle($subrequest, DrupalKernel::SUB_REQUEST);
|
||||
$response->setStatusCode(403, 'Access denied');
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue