site:for-user:susanin:manager:menu

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
site:for-user:susanin:manager:menu [2019/03/31 08:36]
usov
site:for-user:susanin:manager:menu [2020/09/24 09:42] (текущий)
Строка 58: Строка 58:
 ---- ----
  
-==== Массив Меню ====+==== Сложные ​ссылки с параметрами ​====
  
-{{:​site:​for-tech:​models:​pasted:​20190328-094558.png}}+При создании пункта меню **не пытайтесь** писать сложную ссылку типа
  
-Массив в **unserialize** виде представляет из себя следующее:+{{:site:​for-user:​susanin:​manager:​pasted:​20190331-084408.png}}
  
-    * каждый ​верхний ​пункт меню - массив +в поле **сылка"** для этого **есть специальные поля** и работают они следующим образом:
-    * вложенный пункт меню - массив в элементе **items:​Araray** основного пункта +
-    * обязательные элементы в пункте (//​желтый//​):​ +
-        * **label** - отвечает за заголовок пункта +
-        ​* **url** - отвечает за ссылку пункта (в формате: **/​controller/​action**) +
-    * не обязательные элементы (//​белый//​):​ +
-        ​* **icon** - содержит часть ​CSS класса иконки **glyphicon** ("​glyphicon glyphicon-home"​ => "​home"​) +
-        * **active** - ссылка на страницу, ​при нахождении на которой пункт меню будет выделен как активный (в формате: **controller/​action**) +
-        * **items** - массив с массивами вложенных ​пунктов меню +
-    * Если ссылка содержит ​**GET** аргументы (//​красный//​):​ +
-        * **url** - элемент пункта меню превращается ​из строки в ассоциативный массив, в котором первый элемент имеет ключ **url** и точно так же как ​и в обычном случае содержит ссылку,​ а последующие элементы массива это **ключ(аргумент) -> значение(значение)** для url-адреса **("​type"​ => 10) -> (controller/​action?​type=10)** +
-        * **active** - так же как и url превращается в ассоциативный массив,​ первый элемент с ключом **active** содержит ссылку как и в обычном случае,​ а второй(он же последний) элемент - массив содержащий пары **ключ -> значение** для ​определения аргументов **(["​type"​ => 10])**+
  
-После сборки массива он с помощью метода **serialize** упаковывается в базу+{{:​site:​for-user:​susanin:​manager:​pasted:​20190331-084633.png?​600}} ​
  
----- +    * **Параметры адресной строки для юрл(1)** - перечисляем параметры ссылки (то что идет после ? в ссылке) **через &** (например: user=5&​post=2) 
- +    ​* **Параметры адресной строки для активации(2)** - то же самоеработает для определения активности пункта меню (менять **ТОЛЬКО** если пункт меню нужно подсвечивать в других особых случаях)
-==== На что обратить внимание ==== +
- +
-    * Ссылка в элементе массива **url** вначале **имеет слэш** //​(/​controller/​action)//,​ а в элементе **active ​слэша нет** //​(controller/​action)//​ +
-    * если ссылка меню сложная и имеет **GET** аргументы (параметры) в url адресе, то элементы массива ​**url** ​и **active** изменяются. Теперь ​они не строкового типа - а массивы. с первым элементом понятно,​ он сохранился строковым как и раньше, ​но в случае с **url** ​у нас массив имеет первый элемент:String ссылку а **ПОСЛЕДУЮЩИЕ** arg => value, а в массиве **active** ​у нас всего два элемента, первый так же String, а **ВТОРОЙ - МАССИВ** ​с arg => value +
- +
-//Для примера://​ +
-    * <code php>​["​url"​ => "/​controller/​action",​ "​firstArg"​ => 10, "​secondArg"​ => "​view"​]</​code>​ +
-    * <code php>​["​active"​ => "​controller/​action",​ ["​firstArg"​ => 10, "​secondArg"​ => "​view"​]]</​code>​+
  
 ---- ----
  
-==== Основные методы ==== 
-  * <code php>​public static function getMenuByType($type) // возвращает меню из базы в serialize формате для определенного типа пользователя</​code>​ 
-  * <code php>​public static function renderTopMenu($arrTopMenuLinks) // возвращает html код верхнего меню по массиву ссылок из параметров приложения</​code>​ 
-  * <code php>​public static function createMenuFromBase($menu,​ $nowPage, $nowParams) // возвращает меню в виде айтемов для виджета меню</​code>​ 
- 
----- 
  • site/for-user/susanin/manager/menu.1554021410.txt.gz
  • Последние изменения: 2020/09/24 09:42
  • (внешнее изменение)