$scopeData) { $children .= sprintf( '%s', empty($scopeData['url']) ? '#' : $baseurl . '/' . h($scopeData['url']), empty($scopeData['class']) ? '' : h($scopeData['class']), $backgroundColour, empty($scopeData['label']) ? h($scope) : $scopeData['label'] ); foreach ($scopeData['children'] as $action => $data) { if ( (!empty($data['requirements']) && !$data['requirements']) || ( !empty($data['actions']) && !in_array($this->request->getParam('action'), $data['actions']) ) || !empty($data['actions']) && $scope !== $this->request->getParam('controller') ) { continue; } $matches = []; preg_match_all('/\{\{.*?\}\}/', $data['url'], $matches); if (!empty($matches[0])) { $mainEntity = \Cake\Utility\Inflector::underscore(\Cake\Utility\Inflector::singularize($scope)); foreach ($matches as $match) { $data['url'] = str_replace( $match[0], Cake\Utility\Hash::extract($entity, trim($match[0], '{}'))[0], $data['url'] ); } } $active = ($scope === $this->request->getParam('controller') && $action === $this->request->getParam('action')); if (!empty($data['popup'])) { $link_template = '%s'; } else { $link_template = '%s'; } $children .= sprintf( $link_template, empty($data['url']) ? '#' : $baseurl . h($data['url']), empty($data['class']) ? '' : h($data['class']), $active ? 'active' : '', $active ? '' : $backgroundColour, empty($data['label']) ? h($action) : $data['label'] ); } } } echo sprintf( '
%s
', $backgroundColour, $children );