Optgroup 3 уровня с Symfony

Я использую Symfony, и я хотел бы создать оптгруппу 3 уровня:

Категория 1 (инвалид)
—ChildCategory 1.1
—ChildCategory 1.2 (отключено)
—-ChildChildCategory 1.2.1
Категория 2

Но все, что я получил, это:

Категория 1 (инвалид)
—ChildCategory 1.1
ChildCategory 1.2 (отключено)
—ChildChildCategory 1.2.1
Категория 2

Мой HTML-код:

<select id="event_category" name="event[category]" class="form-control">
<optgroup label="Category 1">
<option value="8">Category 1.1</option>
</optgroup>
<optgroup label="Category 1.2">
<option value="7">Category 1.2.1</option>
</optgroup>
<option value="3">Category 2</option>
</select>

Я создаю массив с этим кодом, чтобы добавить его в мой formType:

$arrayCategories = array();
foreach ($categories as $category)
{
if (count($category->getChildren()) > 0)
{
$arrayCategories[$category->getTitle()] = array();

foreach ($category->getChildren() as $child)
{
if (count($child->getChildren()) > 0)
{
$arrayCategories[$category->getTitle()][$child->getTitle()] = array();

foreach ($child->getChildren() as $child2)
{
$arrayCategories[$category->getTitle()][$child->getTitle()][$child2->getTitle().' - '. $child2->getLangLabel()] = $child2->getId();
}
}
else
{
$arrayCategories[$category->getTitle()][$child->getTitle().' - '. $child->getLangLabel()] = $child->getId();
}
}
}
else
{
$arrayCategories[$category->getTitle().' - '. $category->getLangLabel()] = $category->getId();
}
}

Спасибо за помощь!

-1

Решение

Вы не можете, optgroup может иметь только «выбрать» в качестве родителя.
Посмотрите на это, этот HTML должен работать, но это не так:

<select>
<optgroup label="Level One">
<option> A.1 </option>
<optgroup label="Level Two">
<option>A.B.1</option>
</optgroup>
<option> A.2 </option>
</optgroup>
<option> A </option>
</select>
0

Другие решения

Я нашел решение! найти все категории и отобразить их на моей странице ветки, а также отобразить их:

<select id="event_category" class="form-control">
{% for category in categories %}
{% if category.children|length == 0 %}

<option value="{{ category.id }}">{{ category.title }} - {{ category.getLangLabel() }}</option>
{% else %}
<option value="{{ category.id }}" disabled>{{ category.title }} - {{ category.getLangLabel() }}</option>
{% for child in category.children %}

{% if child.children|length == 0 %}
<option value="{{ child.id }}">&nbsp;&nbsp;&nbsp;&nbsp;{{ child.title }} - {{ child.getLangLabel() }}</option>
{% else %}
<option value="{{ child.id }}" disabled>&nbsp;&nbsp;&nbsp;&nbsp;{{ child.title }} - {{ child.getLangLabel() }}</option>
{% for secondChild in child.children %}
<option value="{{ secondChild.id }}">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{{ secondChild.title }} - {{ secondChild.getLangLabel() }}</option>
{% endfor %}
{% endif %}
{% endfor %}
{% endif %}
{% endfor %}

Спасибо за помощь ! 🙂

0

По вопросам рекламы [email protected]