Комментарии: IphpFileStoreBundle — symfony2 file upload https://symfonydev.ru Разработка на Symfony2: Doctrine file upload , CMS, Sonata Admin Bundle Tue, 21 Jan 2014 07:09:08 +0000 hourly 1 http://wordpress.org/?v=3.4.1 Автор: Slider https://symfonydev.ru/iphpfilestorebundle/#comment-14489 Slider Wed, 08 Jan 2014 00:25:23 +0000 https://symfonydev.ru/?page_id=21#comment-14489 Так и не найдено решение этой проблемы? Спасибо за ваш блог, очень помог в изучении предмета. Так и не найдено решение этой проблемы?

Спасибо за ваш блог, очень помог в изучении предмета.

]]>
Автор: beginner https://symfonydev.ru/iphpfilestorebundle/#comment-13261 beginner Wed, 25 Sep.2026 16:25:30 +0000 https://symfonydev.ru/?page_id=21#comment-13261 Здравствуйте. Подскажите, пожалуйста, решение. К форме редактирования профиля пользователя (FOSUserBundle) добавил поле portret для выгрузки фотографии (IphpFileStoreBundle). В одной единой форме все прекрасно работает. Но нужно отделить выгрузку портрета от редактирования остальных данных. Отдельно от основной формы выгрузка работает, а первоначальная форма редактирования данных пользователя (уже без поля для портрета) дает ошибку: "Expected argument of type string, array given". ...vendor\symfony\symfony\src\Symfony\Component\Validator\Constraints\FileValidator.php at line 93 Если в описании сущности убрать из описания свойства portret аннотацию @Assert\File( maxSize="5M"), то прекрасно работает. Попытки в форме "отключить" обновление свойства не помогают. Ни 'mapped' => false, ни remove('portret'). Спасибо. Здравствуйте.
Подскажите, пожалуйста, решение.
К форме редактирования профиля пользователя (FOSUserBundle) добавил поле portret для выгрузки фотографии (IphpFileStoreBundle). В одной единой форме все прекрасно работает. Но нужно отделить выгрузку портрета от редактирования остальных данных. Отдельно от основной формы выгрузка работает, а первоначальная форма редактирования данных пользователя (уже без поля для портрета) дает ошибку:
«Expected argument of type string, array given».
…vendor\symfony\symfony\src\Symfony\Component\Validator\Constraints\FileValidator.php at line 93
Если в описании сущности убрать из описания свойства portret аннотацию @Assert\File( maxSize=»5M»), то прекрасно работает.
Попытки в форме «отключить» обновление свойства не помогают.
Ни ‘mapped’ => false, ни remove(‘portret’).
Спасибо. ]]>
Автор: vitiko https://symfonydev.ru/iphpfilestorebundle/#comment-13084 vitiko Mon, 16 Sep.2026 05:42:57 +0000 https://symfonydev.ru/?page_id=21#comment-13084 Возможно проблема в размере файла и лимите на размер загружаемых файлов со стороны веб-сервера / PHP Возможно проблема в размере файла и лимите на размер загружаемых файлов со стороны веб-сервера / PHP ]]> Автор: vitiko https://symfonydev.ru/iphpfilestorebundle/#comment-13083 vitiko Mon, 16 Sep.2026 05:42:14 +0000 https://symfonydev.ru/?page_id=21#comment-13083 Картинки, выводящейся при использовании типа формы iphp_file ? Нужно переопределить шаблон IphpFileStoreBundle/Resources/views/fields.html.twig Картинки, выводящейся при использовании типа формы iphp_file ? Нужно переопределить шаблон IphpFileStoreBundle/Resources/views/fields.html.twig ]]> Автор: alex https://symfonydev.ru/iphpfilestorebundle/#comment-12987 alex Wed, 04 Sep.2026 11:40:54 +0000 https://symfonydev.ru/?page_id=21#comment-12987 Добрый день, подскажите, как задать размер высоту и ширину картинки ? Добрый день, подскажите, как задать размер высоту и ширину картинки ? ]]> Автор: fedor https://symfonydev.ru/iphpfilestorebundle/#comment-12923 fedor Sun, 25 Aug.2026 21:16:46 +0000 https://symfonydev.ru/?page_id=21#comment-12923 Создал сущность: <?php namespace Acme\MyBundle\Entity; use Iphp\FileStoreBundle\Mapping\Annotation as FileStore; use Symfony\Component\Validator\Constraints as Assert; use Doctrine\ORM\Mapping as ORM; /** * @ORM\Entity * @ORM\Table(name="photo") * @FileStore\Uploadable */ class Photo { /** * @ORM\Id * @ORM\Column(type="integer") * @ORM\GeneratedValue(strategy="AUTO") */ private $id; /** * @ORM\Column(type="string", length=255) */ private $title; /** * @Assert\File( maxSize="20M") * @FileStore\UploadableField(mapping="photo") * @ORM\Column(type="array") */ private $photo; Создал класс класс для админки PhotoAdmin.php: addIdentifier('title'); } protected function configureFormFields(FormMapper $formMapper) { return $formMapper->add('title')->add('photo', 'iphp_file'); } } Cоздал контроллер для админки PhotoAdminController.php (пустой): <?php namespace Acme\MyBundle\Controller; use Sonata\AdminBundle\Controller\CRUDController; class PhotoAdminController extends CRUDController { } Создал сервис в конфиге: acme_my.admin.photo: class: Acme\MyBundle\Admin\PhotoAdmin arguments: [~, Acme\MyBundle\Entity\Photo, AcmeMyBundle:PhotoAdmin] tags: - {name: sonata.admin, manager_type: orm, group: Основные, label: Фотки} В админке появилась страница редактирования сущности. Добавил фотку, нажал сохранить. Выдало ошибку. "На веб-сайте произошла ошибка при получении http://my/app_dev.php/admin/acme/my/photo/create?uniqid=s521a72a9b7071." Объект сохранился, но без добавленной фотки. Создал сущность:

<?php
namespace Acme\MyBundle\Entity;
use Iphp\FileStoreBundle\Mapping\Annotation as FileStore;
use Symfony\Component\Validator\Constraints as Assert;

use Doctrine\ORM\Mapping as ORM;

/**
* @ORM\Entity
* @ORM\Table(name="photo")
* @FileStore\Uploadable
*/

class Photo
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;

/**
* @ORM\Column(type="string", length=255)
*/
private $title;

/**
* @Assert\File( maxSize="20M")
* @FileStore\UploadableField(mapping="photo")
* @ORM\Column(type="array")
*/
private $photo;

Создал класс класс для админки PhotoAdmin.php:

addIdentifier(‘title’);
}

protected function configureFormFields(FormMapper $formMapper)
{
return $formMapper->add(‘title’)->add(‘photo’, ‘iphp_file’);
}
}

Cоздал контроллер для админки PhotoAdminController.php (пустой):

<?php

namespace Acme\MyBundle\Controller;

use Sonata\AdminBundle\Controller\CRUDController;

class PhotoAdminController extends CRUDController
{

}

Создал сервис в конфиге:

acme_my.admin.photo:
class: Acme\MyBundle\Admin\PhotoAdmin
arguments: [~, Acme\MyBundle\Entity\Photo, AcmeMyBundle:PhotoAdmin]
tags:
— {name: sonata.admin, manager_type: orm, group: Основные, label: Фотки}

В админке появилась страница редактирования сущности. Добавил фотку, нажал сохранить. Выдало ошибку.
"На веб-сайте произошла ошибка при получении http://my/app_dev.php/admin/acme/my/photo/create?uniqid=s521a72a9b7071.&quot;

Объект сохранился, но без добавленной фотки.

]]>
Автор: beginner https://symfonydev.ru/iphpfilestorebundle/#comment-12860 beginner Fri, 16 Aug.2026 15:43:42 +0000 https://symfonydev.ru/?page_id=21#comment-12860 Здравствуйте. Вопрос решился очень просто: (Sonata\UserBundle\Resources\views\Profile\edit_profile.html.twig) Добавлением в тег атрибута enctype="multipart/form-data". Здравствуйте.
Вопрос решился очень просто:
(Sonata\UserBundle\Resources\views\Profile\edit_profile.html.twig)
Добавлением в тег атрибута enctype=»multipart/form-data». ]]>
Автор: vitiko https://symfonydev.ru/iphpfilestorebundle/#comment-12855 vitiko Wed, 14 Aug.2026 13:10:32 +0000 https://symfonydev.ru/?page_id=21#comment-12855 По умолчанию название файла транслитерируется и пробел заменяется на - (тире). Приведите пример своего файла конфигурации маппинга. Стандартного именователя на основе хэш в поставке нет, можно написать самостоятельно расширив класс Iphp\FileStoreBundle\Naming\DefaultNamer По умолчанию название файла транслитерируется и пробел заменяется на — (тире). Приведите пример своего файла конфигурации маппинга.

Стандартного именователя на основе хэш в поставке нет, можно написать самостоятельно расширив класс Iphp\FileStoreBundle\Naming\DefaultNamer

]]>
Автор: Павел https://symfonydev.ru/iphpfilestorebundle/#comment-12854 Павел Tue, 13 Aug.2026 18:24:18 +0000 https://symfonydev.ru/?page_id=21#comment-12854 При загрузке изображения с пробелами в названии имени, картинка загружается но не доступна. Как можно сделать чтобы имя загружаемого файла сменялось на hash от имени? При загрузке изображения с пробелами в названии имени, картинка загружается но не доступна. Как можно сделать чтобы имя загружаемого файла сменялось на hash от имени? ]]> Автор: beginner https://symfonydev.ru/iphpfilestorebundle/#comment-12657 beginner Tue, 06 Aug.2026 15:54:26 +0000 https://symfonydev.ru/?page_id=21#comment-12657 Здравствуйте. Подскажите, пожалуйста, в чем ошибка, если файл не выгружается, а в таблицу БД в соответствующее поле записывается только одно значение массива: s:14:"filename.jpg"; И, соответственно, при отображении Symfony выдает ошибку: Expected argument of type "object, array or empty", "string" given. Делал почти то же самое в админской части (SonataAdminBundle) - там все работает прекрасно. В пользовательской части (FOSUserBundle и SonataUserBundle) пытаюсь в форму редактирования профайла добавить дополнительное поле для выгрузки аватара. Кнопка выбора файла есть, но картинка не выгружается. #config.yml iphp_file_store: mappings: user: upload_dir: %kernel.root_dir%/../www/images/user upload_path: /images/user overwrite_duplicates: true namer: property: params: { field : username } #vendor\sonata-project\Sonata\UserBundle\Form\Type\ProfileType.php public function buildForm(FormBuilderInterface $builder, array $options) { $builder ->add('avatar', 'iphp_file', array('label' => 'Аватар', 'required' => false)) ->add('firstname', null, array('label' => 'Имя', 'required' => false)) ->add('lastname', null, array('label' => 'Фамилия', 'required' => false)) ... ; } #vendor\sonata-project\Sonata\UserBundle\Resources\views\Profile\edit_profile.html.twig ... div class="control-group"> {{ form_label(form.avatar, 'Аватар', {'attr': {'class': 'control-label'}}) }} {{ form_widget(form.avatar) }} {{ form_label(form.firstname, 'label_profile_firstname', {'attr': {'class': 'control-label'}}) }} {{ form_widget(form.firstname) }} {{ form_label(form.lastname, 'label_profile_lastname', {'attr': {'class': 'control-label'}}) }} {{ form_widget(form.lastname) }} ... {{ form_rest(form) }} ... Спасибо! Здравствуйте.
Подскажите, пожалуйста, в чем ошибка, если файл не выгружается, а в таблицу БД в соответствующее поле записывается только одно значение массива: s:14:»filename.jpg»;
И, соответственно, при отображении Symfony выдает ошибку: Expected argument of type «object, array or empty», «string» given.
Делал почти то же самое в админской части (SonataAdminBundle) — там все работает прекрасно.
В пользовательской части (FOSUserBundle и SonataUserBundle) пытаюсь в форму редактирования профайла добавить дополнительное поле для выгрузки аватара.
Кнопка выбора файла есть, но картинка не выгружается.

#config.yml

iphp_file_store:
mappings:
user:
upload_dir: %kernel.root_dir%/../www/images/user
upload_path: /images/user
overwrite_duplicates: true
namer:
property:
params: { field : username }

#vendor\sonata-project\Sonata\UserBundle\Form\Type\ProfileType.php

public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add(‘avatar’, ‘iphp_file’, array(‘label’ => ‘Аватар’, ‘required’ => false))
->add(‘firstname’, null, array(‘label’ => ‘Имя’, ‘required’ => false))
->add(‘lastname’, null, array(‘label’ => ‘Фамилия’, ‘required’ => false))

;
}

#vendor\sonata-project\Sonata\UserBundle\Resources\views\Profile\edit_profile.html.twig

div class=»control-group»>
{{ form_label(form.avatar, ‘Аватар’, {‘attr’: {‘class’: ‘control-label’}}) }}
{{ form_widget(form.avatar) }}

{{ form_label(form.firstname, ‘label_profile_firstname’, {‘attr’: {‘class’: ‘control-label’}}) }}
{{ form_widget(form.firstname) }}

{{ form_label(form.lastname, ‘label_profile_lastname’, {‘attr’: {‘class’: ‘control-label’}}) }}
{{ form_widget(form.lastname) }}


{{ form_rest(form) }}

Спасибо!

]]>