Как разделить папки с помощью IvoryCKEditorBundle для загрузки файлов?

В своем проекте я использую следующее:

  • Симфония 2.3
  • Цвет слоновой костиCKEditorBundle
  • CoopTilleulsCKEditorSonataMediaBundle

Мое намерение состоит в том, чтобы пользователи могли создавать свои собственные страницы для отображения различных типов информации. Однако пользователи разделены определенным типом отношений (некоторые пользователи принадлежат к определенной школе, поэтому только пользователи из этой школы должны иметь возможность видеть файлы, загруженные указанной школой, и никто другой). Я буквально ничего не знаю о пакете Sonata Media Bundle или о проекте Sonata в частности, я ограничен во времени, а документации слишком много, чтобы я мог справиться за короткое время. Каким-то образом мне удалось установить Media Bundle, и даже это заняло целый день, который был потрачен на выяснение зависимостей, чтобы заставить его работать.

Итак, я пришел к вам. Когда я пытаюсь загрузить файл, я получаю следующую ошибку:

 Key "provider" for array with keys "context, category, hide_context" does not exist in CoopTilleulsCKEditorSonataMediaBundle:MediaAdmin:browser.html.twig at line 47 

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

  • Почему возникает эта ошибка?
  • Зачем мне нужно настраивать класс администратора? Разве AdminBundle не поставляется со своим базовым классом администратора?
  • Как разделить пользователей, чтобы каждый мог видеть только то, что загружено для его учебного заведения, и не более того?

Спасибо за ваше время.


person Carlos Vergara    schedule 06.03.2015    source источник


Ответы (1)


Эта ошибка связана с изменением принципа работы MediaBundle. Чтобы решить эту проблему, вам нужно перейти к browser.html.twig и заменить строки с 46 по 58 на это:

{% if (persistent_parameters.provider is defined) and ( not persistent_parameters.provider) %}
                        <li class="active"><a href="{{ admin.generateUrl('browser', {'context': persistent_parameters.context, 'provider': null}|merge(ckParameters)) }}">{{ "link.all_providers"|trans({}, 'SonataMediaBundle') }}</a></li>
                    {% else %}
                        <li><a href="{{ admin.generateUrl('browser', {'context': persistent_parameters.context, 'provider': null}|merge(ckParameters)) }}">{{ "link.all_providers"|trans({}, 'SonataMediaBundle') }}</a></li>
                    {% endif %}

                    {% for provider_name in providers %}
                        {% if (persistent_parameters.provider is defined) and (persistent_parameters.provider == provider_name) %}
                            <li class="active"><a href="{{ admin.generateUrl('browser', {'context': persistent_parameters.context, 'provider': provider_name}|merge(ckParameters)) }}">{{ provider_name|trans({}, 'SonataMediaBundle') }}</a></li>
                        {% else %}
                            <li><a href="{{ admin.generateUrl('browser', {'context': persistent_parameters.context, 'provider': provider_name}|merge(ckParameters)) }}">{{ provider_name|trans({}, 'SonataMediaBundle') }}</a></li>
                        {% endif %}
                    {% endfor %}

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

person xger86x    schedule 17.03.2015
comment
Я еще не пробовал это решение, но, учитывая, что награда почти закончилась, я присуждаю ее вам. Как только я это сделаю, я дам вам свой отзыв. Благодарю вас! - person Carlos Vergara; 17.03.2015