Добавьте дополнительное поле, чтобы показать действие с EasyAdmin - PullRequest
0 голосов
/ 24 марта 2019

У меня есть организация Поставщик и другая организация Артикул , которая имеет отношение к этому Поставщику.Когда я показываю Поставщика, я хотел бы показать статью, предоставленную этим Поставщиком.Я добавляю дополнительное поле articles к моей конфигурации easydamin, но у меня есть ошибка Key "label" for array with keys "0" does not exist. в vendor / easycorp / easyadmin-bundle / src / Resources / views / default / show.html.twig (строка 28)

Я делаю свой тест в EasyCorp \ Bundle \ EasyAdminBundle \ Controller \ AdminControllerTrait :: showAction .Я добавляю queryBuilder для получения всех статей, предоставленных поставщиком, и влияю на данные в дополнительном поле, которое я добавил в конфигурации объекта easyadmin.

Переопределить AdminControllerTrait.php:

    /**
     * The method that is executed when the user performs a 'show' action on an entity.
     *
     * @return Response
     */
    protected function showAction()
    {
        ...

        // Retrieve the supplier's articles.
        $articles = $this->em->getRepository('App\Entity\Settings\Article')->getArticleFromSupplier($id);
        $fields['articles'] = $articles;
        $deleteForm = $this->createDeleteForm($this->entity['name'], $id);

        ...
    }

Строка 28 файла show.html.twig:

23            {% block show_fields %}
24                {% for field, metadata in fields %}
25                    {% block show_field %}
26                        <div class="form-group field-{{ metadata.type|default('default')|lower }} {{ metadata.css_class|default('') }}">
27                            <label class="control-label">
28                                {{ metadata.label|trans(_trans_parameters)|raw }}
29                            </label>
30                            <div class="form-widget">
31                                <div class="form-control">
32                                    {{ easyadmin_render_field_for_show_view(_entity_config.name, entity, metadata) }}
33                                </div>

Мой запрос:

    public function getArticleFromSupplier($supplier)
    {
        $query = $this->createQueryBuilder('a')
            ->where('a.active = true')
            ->orderBy('a.name', 'ASC')
            ->andWhere('a.supplier = :id')
            ->setParameter('id', $supplier)
            ->getQuery();

        return $query->getResult();
    }

Моя конфигурация easyadmin:

easy_admin:
    entities:
        Supplier:
            show:
                fields:
                    ...
                    - { property: 'articles', type: 'association', label: 'Article', template: '@EasyAdmin/default/field_association.html.twig' }

Я ожидаю, чтобы отобразить таблицу статей, но я не нашел ничего в документации, чтобы сделать это.Мой запрос возвращает массив статей, но ключи этого массива отображаются в виде метки, и это возвращает ошибку.

...