Учение о ветке Symfony 4, Связывание подменю с выпадающим списком - PullRequest
0 голосов
/ 29 октября 2018

В настоящее время я делаю сайт под Symfony. В режиме навигации я вызываю веткой содержимое моей базы данных с таким результатом Вот код:

{% for advert in listWorker %}
{% if advert.client != 'xxxxx' %}
<li class="sidebar-dropdown">
    <a href="#">
        <span>{{ advert.client }}</span>
    </a>
    <div class="sidebar-submenu">
        <ul>
            <li>
                <a href="#">{{ advert.nom }}</a>
            </li>
        </ul>
    </div>
</li>
{% endif %}
{% endfor %}

Однако мне бы хотелось, чтобы результат выглядел как this , и я действительно не знаю, как связать имена с одинаковыми клиентами в одном и том же списке ...

вот мой контроллер

1 Ответ

0 голосов
/ 29 октября 2018

Не имея исходных данных из вашего $ worker-> findAll (), вот пример с некоторыми фиктивными данными, которые Symfony может вернуть:

$db = array(
    '1' => array(
        'client1' => 'name1'
    ),
    '2' => array(
        'client1' => 'name2'
    ),
    '3' => array(
        'client2' => 'name1'
    ),
    '4' => array(
        'client2' => 'name2'
    ),
    '5' => array(
        'client2' => 'name3'
    ),
    '6' => array(
        'client3' => 'name1'
    ),
    '7' => array(
        'client1' => 'name2'
    )
);

Тогда вы можете создать новый массив, который будет перегруппировать все по клиенту:

$final = [];

foreach($db as $item)
{
    $key = key($item);
    $final[$key][] = $item[$key];
}

Как будет выглядеть этот массив:

array(3) {
  ["client1"]=>
  array(3) {
    [0]=>
    string(5) "name1"
    [1]=>
    string(5) "name2"
    [2]=>
    string(5) "name2"
  }
  ["client2"]=>
  array(3) {
    [0]=>
    string(5) "name1"
    [1]=>
    string(5) "name2"
    [2]=>
    string(5) "name3"
  }
  ["client3"]=>
  array(1) {
    [0]=>
    string(5) "name1"
  }
}

Передайте его в представление index.html.twig и выполните итерацию по нему.
Некоторые материалы для чтения: Вложенный цикл веток

...