Действие show Symfony 2 Sonata Admin Bundle не работает

Я интегрирую Sonata Admin Bundle в свой Symfony 2.6. приложение, следуя руководству по Symfony 2. Все в порядке, кроме действия Show. У меня есть запись «Работа», поэтому у меня есть src/Ibw/JobeetBundle/Admin/JobAdmin.php, у которых есть функция configurShowField(ShowMapper $showMapper), как показано ниже.

<?php
namespace Ibw\JobeetBundle\Admin;

use Sonata\AdminBundle\Admin\Admin;
use Sonata\AdminBundle\Datagrid\ListMapper;
use Sonata\AdminBundle\Datagrid\DatagridMapper;
use Sonata\AdminBundle\Validator\ErrorElement;
use Sonata\AdminBundle\Form\FormMapper;
use Sonata\AdminBundle\Show\ShowMapper;

use Ibw\JobeetBundle\Entity\Job;

class JobAdmin extends Admin
{
    // ....

    protected function configureShowField(ShowMapper $showMapper)
    {
        $showMapper
            ->add('category')
            ->add('type')
            ->add('company')
            ->add('webPath', 'string', array('template' => 'IbwJobeetBundle:JobAdmin:list_image.html.twig'))
            ->add('url')
            ->add('position')
            ->add('location')
            ->add('description')
            ->add('how_to_apply')
            ->add('is_public')
            ->add('is_activated')
            ->add('token')
            ->add('email')
            ->add('expires_at')
        ;
    }

    // ....
}

Когда я нажимаю кнопку «Показать» и перехожу на страницу просмотра (admin/ibw/jobeet/job/xxx/show), ни одно из полей не отображается. Исходный обработанный шаблон /vendor/sonata-project/admin-bundle/Resources/views/CRUD/base_show.html.twig:

{% extends base_template %}

{% block actions %}
    <li>{% include 'SonataAdminBundle:Button:edit_button.html.twig' %}</li>
    <li>{% include 'SonataAdminBundle:Button:history_button.html.twig' %}</li>
    <li>{% include 'SonataAdminBundle:Button:list_button.html.twig' %}</li>
    <li>{% include 'SonataAdminBundle:Button:create_button.html.twig' %}</li>
{% endblock %}

{% block tab_menu %}{{ knp_menu_render(admin.sidemenu(action), {'currentClass' : 'active', 'template': admin_pool.getTemplate('tab_menu_template')}, 'twig') }}{% endblock %}

{% block show %}
    <div class="sonata-ba-view">
        ***
        {{ sonata_block_render_event('sonata.admin.show.top', { 'admin': admin, 'object': object }) }}

        {% for name, view_group in admin.showgroups %}
            <table class="table table-bordered">
                {% if name %}
                    <thead>
                        {% block show_title %}
                            <tr class="sonata-ba-view-title">
                                <th colspan="2">
                                    {{ admin.trans(name) }}
                                </th>
                            </tr>
                        {% endblock %}
                    </thead>
                {% endif %}

                <tbody>
                    {% for field_name in view_group.fields %}
                        {% block show_field %}
                            <tr class="sonata-ba-view-container">
                                {% if elements[field_name] is defined %}
                                    {{ elements[field_name]|render_view_element(object) }}
                                {% endif %}
                            </tr>
                        {% endblock %}
                    {% endfor %}
                </tbody>
            </table>
        {% endfor %}

        {{ sonata_block_render_event('sonata.admin.show.bottom', { 'admin': admin, 'object': object }) }}

    </div>
{% endblock %}

Внутреннее содержимое <div class="sonata-ba-view"></div> не показано, кроме трех звездочек, которые я напечатал. Есть ли какая-либо конфигурация, которую мне не хватает?


person Sithu    schedule 27.05.2015    source источник


Ответы (2)


Вам не хватает s в имени вашей функции.

it's

configureShowFields(FormMapper $formMapper)

нет

configureShowField(FormMapper $formMapper)
person MortisQc    schedule 29.05.2015
comment
Спасибо. Ты прав. Учебник по работе кажется неверным. - person Sithu; 29.05.2015
comment
чувак, ты спас мне жизнь, эта глупая малышка испортила мне весь день - person Dean Gite; 05.06.2015
comment
однако документ по-прежнему говорит «Поля» sonata-project.org/bundles/admin /мастер/док/ссылка/ - person Ferenc Dajka; 26.06.2015

Попробуйте добавить звонок в свой admin.yml

ibw_jobbeet.admin.jobadmin:
    class: Ibw\JobeetBundle\Admin\JobAdmin
    ...
    calls:
        - [ setTemplate, ['show', path_to_your_view.html.twig]]

Подробнее о шаблонах в SonataAdmin

person Anna Adamchuk    schedule 28.05.2015
comment
Нам не нужно setTemplate явно объявлять. \app\Rescources\SonataAdminBundle\views\CRUD\show.html.twig может автоматически перезаписывать исходный шаблон /vendor/sonata-project/admin-bundle/Resources/views/CRUD/base_show.html.twig. Но проблема не может быть в шаблоне. Это не может быть результатом переменной admin.showgroups в шаблоне. - person Sithu; 29.05.2015