2014-12-29 3 views
2

У меня есть объект Motors, имеющий отношение OneToMany к объекту File. Загрузка файлов и их связывание выполняется с помощью VichUploaderBundle.Исключение, сгенерированное классом PropertyMappingFactory с попыткой первого элемента массива с веточкой

Моя цель дает простой обзор объекта Motors, отображая только первое изображение этого объекта. Так как я использую прут для отображения моего объекта, я использовал first фильтр прутик следующим образом:

{{ vich_uploader_asset(motors.files|first, 'motors_files') }} 

Это не было успешным. Ошибка, которую я получил, это:

Исключение было сделано во время рендеринга шаблона («Невозможно определить имя класса. Либо укажите его явно или дать объект») в MinnAdsBundle: Motors: index.html. веточка на линии 75

Похоже, что исключение генерируется этим классом PropertyMappingFactory.php.

Я также попытался это:

{%for f in motors.files|first %} 
    {{ vich_uploader_asset(f, 'motors_files') }}<br> 
{%endfor%} 

Но, нет ничего оказаны. Также не возникает ошибок !!! Это странно, так как применение фильтров first и «Длина» возвращает ожидаемое значение (1 или 0):

{{motors.files|first|length}} {#always return the expected value#} 

я сделал еще больше проверок, как показано ниже, но без успеха! Итак, вы могли бы помочь в этом вопросе?

Спасибо!

{# the length of the array#} 
{{motors.files|length}} {# tells me that there is 3 files! (worked perfectly)#} 

{# Retrieving all the links of these file (worked perfectly)#} 
{%for f in motors.files%} 
    {{ vich_uploader_asset(f, 'motors_files') }}<br> 
{%endfor%} 
+0

Возможно, у вас есть PersistentCollection здесь, это не инициализировано или нет. Попробуйте '{{vich_uploader_asset (motors.files.first, 'motors_files')}}' – Ziumin

+0

Все еще имеет то же исключение: ** Исключено («Невозможно определить имя класса или указать его явно или дать объект») в MinnAdsBundle: Motors: index.html.twig в строке 84. ** –

+0

пакет не может получить имя класса объекта, возвращенного 'motors.files | first'. Это проблема!!! @Ziumin –

ответ

1

Я закончил эту проблему путем, если условие в цикле:

{%for f in motors.files%} 
    {%if loop.index == 1%} 
     src="{{ vich_uploader_asset(f, 'motors_files')}}" 
    {% endif %} 
{%endfor%} 

Существует проблема с VichUploaderBundle при работе с фильтром first.

Смежные вопросы