2015-02-19 4 views
1

Я хочу изменить шаблон формы по умолчанию, чтобы включить предварительный просмотр изображения при отображении поля загрузки, поэтому я поместил в мой объект метод, называемый getFormThumbnail(), который возвращает дорожка. Когда объект имеет метод, который он работает, но когда doens't я получаю сообщение об ошибке:Проверьте, существует ли метод в сущности из twig

An exception has been thrown during the rendering of a template ("Warning: call_user_func_array() expects parameter 1 to be a valid callback, class 'Acme\UserBundle\Entity\UserTranslation' does not have a method 'getFormThumbnail' in C:\...\symfony\vendor\knplabs\doctrine-behaviors\src\Knp\DoctrineBehaviors\Model\Translatable\TranslatableMethods.php line 140") in kernel.root_dir/Resources/views/Form/form_div_layout.html.twig at line 43. 

500 Internal Server Error - Twig_Error_Runtime 

я редактирую код в {% block form_widget_simple %}

Я добавил:

{% if type == 'file' %} 
    {% if form.vars.form.parent.vars.value.getFormThumbnail is not null %} 
     <img src="{{ form.vars.form.parent.vars.value.getFormThumbnail | imagine_filter('thumb_250') }}" style="display: block; margin-bottom: 10px"> 
    {% endif %} 
{% endif %} 

Этот код отлично работает, когда существует getFormThumbnail. Так что я попытался добавить is defined и он не работает, я даже пытался что-то вроде:

form is defined 
and 
form is not null 
and 
form.vars is defined 
and 
form.vars is not null 
and 
form.vars.form is defined 
and 
form.vars.form is not null 
and 
form.vars.form.parent is defined 
and 
form.vars.form.parent is not null 
and 
form.vars.form.parent.vars is defined 
and 
form.vars.form.parent.vars is not null 
and 
form.vars.form.parent.vars.value is defined 
and 
form.vars.form.parent.vars.value is not null 
and 
form.vars.form.parent.vars.value.getFormThumbnail is defined 
and 
form.vars.form.parent.vars.value.getFormThumbnail is not null 

Тем не менее, я всегда получаю ту же ошибку, то строка ошибки, кстати, является линия, где я могу проверить, если getFormThumbnail определяется

Так что если ошибка does not have a method есть ли способ проверить, есть ли у нее метод?

+1

Вы пробовали '{% form.vars.form.parent.vars.value.getFormThumbnail() определяется%}'? – chapay

+0

Hi @Oylex i test, который 'определяется ', хорошо работает с объектом, но я не тестирую его в поле объекта формы. Надеюсь, эта помощь. Дайте мне знать, если вы найдете решение! – Matteo

+0

@ AndndSobkanyuk Я тестировал и не работал, однако я использовал решение, предоставленное в ответе, который я принял, который работает. – Oylex

ответ

0

Вы можете создать пользовательский фрагмент только для этого поля. Поэтому вам не нужно проверять, существует ли метод или нет http://symfony.com/doc/current/cookbook/form/form_customization.html#how-to-customize-an-individual-field.

Или вы можете создать расширение формы типа: http://symfony.com/doc/current/cookbook/form/create_form_type_extension.html

+1

Я создал расширение типа формы под названием 'thumb_image' (вместо просто' file'), которое ожидает, что метод будет существовать, и он отлично работает. – Oylex

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