chg: [Component:Navigation] Breadcrumbs get loaded before rendering to have access to view var

So that it can have access to view variables
pull/93/head
Sami Mokaddem 2021-12-01 08:25:01 +01:00
parent aa42e6763a
commit d2a88b3a18
No known key found for this signature in database
GPG Key ID: 164C473F627A06FA
3 changed files with 12 additions and 4 deletions

View File

@ -128,7 +128,6 @@ class AppController extends Controller
} }
$this->ACL->checkAccess(); $this->ACL->checkAccess();
$this->set('breadcrumb', $this->Navigation->getBreadcrumb());
$this->set('ajax', $this->request->is('ajax')); $this->set('ajax', $this->request->is('ajax'));
$this->request->getParam('prefix'); $this->request->getParam('prefix');
$this->set('baseurl', Configure::read('App.fullBaseUrl')); $this->set('baseurl', Configure::read('App.fullBaseUrl'));
@ -143,6 +142,11 @@ class AppController extends Controller
} }
} }
public function beforeRender(EventInterface $event)
{
$this->set('breadcrumb', $this->Navigation->getBreadcrumb());
}
private function authApiUser(): void private function authApiUser(): void
{ {
if (!empty($_SERVER['HTTP_AUTHORIZATION']) && strlen($_SERVER['HTTP_AUTHORIZATION'])) { if (!empty($_SERVER['HTTP_AUTHORIZATION']) && strlen($_SERVER['HTTP_AUTHORIZATION'])) {

View File

@ -5,11 +5,13 @@ class BaseNavigation
{ {
protected $bcf; protected $bcf;
protected $request; protected $request;
protected $viewVars;
public function __construct($bcf, $request) public function __construct($bcf, $request, $viewVars)
{ {
$this->bcf = $bcf; $this->bcf = $bcf;
$this->request = $request; $this->request = $request;
$this->viewVars = $viewVars;
} }
public function addRoutes() {} public function addRoutes() {}

View File

@ -42,7 +42,7 @@ class NavigationComponent extends Component
$this->request = $config['request']; $this->request = $config['request'];
} }
public function beforeFilter($event) public function beforeRender($event)
{ {
$this->fullBreadcrumb = $this->genBreadcrumb(); $this->fullBreadcrumb = $this->genBreadcrumb();
$this->breadcrumb = $this->getBreadcrumb(); $this->breadcrumb = $this->getBreadcrumb();
@ -140,7 +140,8 @@ class NavigationComponent extends Component
$navigationClassname = str_replace('.php', '', $navigationFile); $navigationClassname = str_replace('.php', '', $navigationFile);
require_once(APP . 'Controller' . DS . 'Component' . DS . 'Navigation' . DS . $navigationFile); require_once(APP . 'Controller' . DS . 'Component' . DS . 'Navigation' . DS . $navigationFile);
$reflection = new \ReflectionClass("BreadcrumbNavigation\\{$navigationClassname}Navigation"); $reflection = new \ReflectionClass("BreadcrumbNavigation\\{$navigationClassname}Navigation");
$navigationClasses[$navigationClassname] = $reflection->newInstance($bcf, $request); $viewVars = $this->_registry->getController()->viewBuilder()->getVars();
$navigationClasses[$navigationClassname] = $reflection->newInstance($bcf, $request, $viewVars);
} }
return $navigationClasses; return $navigationClasses;
} }
@ -249,6 +250,7 @@ class BreadcrumbFactory
$routeConfig = $this->addIfNotEmpty($routeConfig, $config, 'icon'); $routeConfig = $this->addIfNotEmpty($routeConfig, $config, 'icon');
$routeConfig = $this->addIfNotEmpty($routeConfig, $config, 'label'); $routeConfig = $this->addIfNotEmpty($routeConfig, $config, 'label');
$routeConfig = $this->addIfNotEmpty($routeConfig, $config, 'textGetter'); $routeConfig = $this->addIfNotEmpty($routeConfig, $config, 'textGetter');
$routeConfig = $this->addIfNotEmpty($routeConfig, $config, 'badge');
return $routeConfig; return $routeConfig;
} }