Заполнить объект многомерным меню - PullRequest
2 голосов
/ 12 января 2011

Мне интересно, есть ли эффективный способ поместить меню в массив или любой другой тип данных. С php я бы сделал что-то вроде этого:

$menu[1] = "home";
$menu[2] = "news";
$menu[3]["item"] = "products";
$menu[3]["subMenu"][1] = "jackets";
$menu[3]["subMenu"][2] = "T-shirts";
$menu[4] = "contact";

Однако я понятия не имею, как можно это сделать при холодном синтезе. Я хочу получить эти данные из БД и вставить их в объект, это позволит мне сгенерировать HTML из массива.

Ответы [ 2 ]

6 голосов
/ 12 января 2011

Чтобы еще дальше ответить на вопрос Кьярана, вы можете сделать это полностью с помощью литералов объектов в CF 9:

<cfset menu = ["home",
               "news",
               {"item"="products",
               "subMenu"= ["jackets",
                           "T-shirts"]},
               "contact"]>
<cfdump var="#menu#" /> <!--- Output --->
2 голосов
/ 12 января 2011

Это на самом деле очень похоже. Это предполагает ColdFusion 8 (или выше) для литералов массива ([]) и struct ({}):

<cfset menu = [] /> <!--- Create initial array --->

<cfset menu[1] = "home" />
<cfset menu[2] = "news" />
<cfset menu[3] = {} /> <!--- Create structure --->
<cfset menu[3]["item"] = "products" /> <!--- Address structure by key --->
<cfset menu[3]["subMenu"] = [] />
<cfset menu[3]["subMenu"][1] = "jackets" />
<cfset menu[3]["subMenu"][2] = "T-shirts" />
<cfset menu[4] = "contact" />

<cfdump var="#menu#" /> <!--- Output --->

Надеюсь, это поможет!

...