У меня возникла проблема с проверкой нового загруженного файла.Проверка Symfony2 объекта OneToMany ArrayCollection объектов изображения
У меня есть сущность продукта:
// src/Acme/DemoBundle/Entity/Product
...
/**
* @ORM\OneToMany(targetEntity="Image", mappedBy="product", cascade={"persist"})
* @Assert\Image(
* minWidth = 10,
* maxWidth = 20,
* minHeight = 10,
* maxHeight = 20
*)
*/
protected $images;
...
public function __construct()
{
$this->images= new \Doctrine\Common\Collections\ArrayCollection();
}
public function getImages(){
return $this->images;
}
public function setImages($images){
$this->images = $images;
return $this;
}
Image объект является очень простой, с именем, размером, тип_mime.
И у меня есть работа с некоторыми пользовательскими загрузчиками, поэтому я не использую форму и форму-> isValid. Я проверить, как это:
...
public function onUpload(PostPersistEvent $event)
{
$em= $this->doctrine->getManager();
$product = $this->doctrine->getRepository('Acme\DemoBundle\Entity\Product')->findOneById($customId);
$image = new Image();
$image->setProduct($product)
->setName($uploadInfo->name)
->setStoredName($uploadInfo->storedName)
->setUuid($uploadInfo->uuid)
->setSize($uploadInfo->size)
->setMimeType($uploadInfo->mimeType);
$validator = Validation::createValidatorBuilder()
->enableAnnotationMapping()
->getValidator();
$a = $product->getImages();
$a->add($image);
$product->setImages($a);
$errors = $validator->validate($product);
И я получил ошибку:
{"message":"Expected argument of type string, object given","class":"Symfony\\Component\\Validator\\Exception\\UnexpectedTypeException","trace":[{"namespace":"","short_class":"","class":"","type":"","function":"","file":".../vendor\/symfony\/symfony\/src\/Symfony\/Component\/Validator\/Constraints\/FileValidator.php","line":98,"args":[]}
Если скажу я NotNull аннотации Утверждает на Enother поля (например, имя) - это работает, я могу получить ошибки , Но с ArrayCollection - нет.
Я делаю что-то неправильно и не могу найти информацию в Интернете.
Могут ли гуру помочь мне?
Я добавил * @ORM \ OneToMany (targetEntity = "Image", mappedBy = "продукт", каскад = { "упорствовать"}) * @Assert \ All ({ * @Assert \ Image ( * MinWidth = 10, * MaxWidth = 20, * MinHeight = 10, * MaxHeight = 20 *) *}) защищенные $ изображения; Ничего не изменилось. И у меня нет свойства $ file, почему вы его добавили? –
Хорошо. Я понял. Я добавил файл свойства. Установите для него UploadedFile или File. И валидация - это работы. Спасибо –