/** * Construit les diff�rents menus de la page courante */ private function _buildMenus() { $host = $this->request->host(); // R�cup�ration du host actuel, ex : www.monsite.fr $reducer = function ($output, $value) { $output[0] = $value->locale; // On ajoute la locale du host if (!is_null($value->fallback)) { $output[1] = $value->fallback->locale; // On ajoute la locale du language de fallback du host } return $output; }; $this->I18ns = TableRegistry::get('BoxManager.I18ns'); $i18ns = $this->I18ns->find('all', ['conditions' => ['OR' => ['I18ns.domain' => $host, 'I18ns.alias' => $host]], 'contain' => ['Fallback']])->reduce($reducer, []); // @TODO : Revoir la récupération du code menu $reducer = function ($output, $value) { $output[MenuTrait::getRawMenu($value->menu_id)] = $value->menuitems; return $output; }; $this->Menus = TableRegistry::get("BoxManager.Menus"); $menus = $this->Menus->find('all', ['contain' => ['Menuitems' => function ($query) use($i18ns) { return $query->find('translations', ['locales' => $i18ns]); }]])->reduce($reducer, []); $this->set(compact('menus')); }
public function build($items, $code, $type = self::MENU_SIMPLE) { return $this->_menuSimple($items[MenuTrait::getRawMenu($code)]); }