2015-10-25 4 views
-1

Я использую FOSUserBundle, но я переопределил контроллеры по умолчанию, чтобы создать свою собственную логику и формы.Проверка файла формы Symfony

Вот мой ProfileFormType.php

namespace UserBundle\Form\Type; 

use Symfony\Component\Form\AbstractType; 
use Symfony\Component\Form\FormBuilderInterface; 

class ProfileFormType extends AbstractType 
{ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
    $builder->add('avatar', 'file', array('required' => false, 'data_class' => null)); 
    $builder->add('phone', 'text', array('required' => false)); 
    $builder->add('gender', 'choice', array(
     'choices' => array('not specifed' => 'Не указан', 'male' => 'Мужской', 'female' => 'Женский'), 
    )); 
    $builder->add('birthDate', 'date', array('years' => range(date('Y') -100, date('Y')))); 
     $builder->add('locationCountry', 'text', array('required' => false)); 
    $builder->add('locationCity', 'text', array('required' => false)); 
    } 

    public function getParent() 
    { 
     return 'fos_user_profile'; 
    } 

    public function getName() 
    { 
     return 'app_user_profile'; 
    } 
} 

На данный момент, нет никакой проверки расширения файла. Как я должен проверять расширения? Какова наилучшая практика?

Я попытался следующий

$builder->add('avatar', 'file', array('required' => false, 'data_class' => null, 'mimeType' => 'image/jpeg')); 

Но она возвращается ошибка. Кстати, я хочу принимать только файлы .png и .jpeg.

Спасибо

+0

Пробовали ли вы объявить конкретные проверки в вашем профиле Entity? – scoolnico

+0

Сущность - это Пользователь, я не сохраняю файл точно в db. Я сохраняю имя файла, а затем получаю это имя из db. –

ответ

1

Как как сказано в моем предыдущем комментарии:

/** 
* @Assert\File(
*  mimeTypes = {"image/jpeg", "image/png"}, 
*  mimeTypesMessage = "Only jpeg or png are allowed." 
*) 
*/ 
protected $avatar; 
+0

Получение следующей ошибки. [Семантическая ошибка] Аннотации «@Assert \ File» в свойстве AppBundle \ Entity \ User :: $ avatar никогда не импортировались. Возможно, вы забыли добавить выражение «use» для этой аннотации? –

+1

Отсутствует «использование». Добавить 'use Symfony \ Component \ Validator \ Constraints as Assert;' в User Entity. – scoolnico

+0

большое спасибо! :) –

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