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

0

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

  • Symfony 2.3
  • IvoryCKEditorBundle
  • CoopTilleulsCKEditorSonataMediaBundle

Мое намерение состоит в том, чтобы пользователи могли создавать свои собственные страницы для отображения различных типов информации. Тем не менее, пользователи разделены определенными отношениями (некоторые пользователи принадлежат к определенной школе, поэтому только пользователи из этой школы должны иметь возможность видеть файлы, загруженные в школу, и никто другой). Я знаю буквально ничего о Сонате 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 

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

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

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

Теги:
ckeditor
sonata
sonata-admin

1 ответ

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 %}

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

  • 0
    Я еще не попробовал это решение, но, учитывая, что щедрость почти закончилась, я награду его вам. Как только я это сделаю, я дам вам свой отзыв. Спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню