Я все еще изучаю Symfony2 и не понимаю, как загрузить файл.
Не волнуйтесь, я уже проверил документацию. Это действительно хорошо, но моя проблема не объясняется ни в одном уроке.
Я ищу руководство по загрузке файла с помощью Symfony2, но со всем, что нужно всем (например, ограничение расширения, переименование файла на основе id и т.д., сохранение пути в db и т.д.)...)
Я нашел хорошие уроки, попытался их смешивать, но без успеха. Каждый раз, когда возникает другая проблема: перезагрузка файлов на каждой отправке в форме (даже если поле файла пуст), guessExtension невозможно использовать, путь tmp, хранящийся в базе данных, а не правильный путь, файл не перемещен, невозможно использовал идентификатор в переименовании, потому что идентификатор включен автоматически и поэтому еще не сгенерирован).
Итак, я поставлю "стандартную" сущность, скажем: Photo.php
/**
* Photo
*
* @ORM\Table(name="photo")
* @ORM\Entity
* @ORM\HasLifecycleCallbacks
*/
class Photo
{
// Annotation for the id and auto increment etc
private $id;
/**
* @var string
* @Assert\File( maxSize = "3072k", mimeTypesMessage = "Please upload a valid Image")
* @ORM\Column(name="image", type="string", length=245, nullable=false)
*/
private $image
private $title
private $description
// all the function get, set for the 4 previous variables
}
и контроллер:
public function addPhotoAction()
{
$add_photo = new Photo;
$formBuilderPhoto = $this->createFormBuilder($add_photo);
$formBuilderPhoto
->add('title','text',array('label' => 'Title of the photo', 'required' => true))
->add('image','file', array('required' => true, 'data_class' => null))
->add('description','textarea',array('label' => 'Description of your photo', 'required' => false))
;
$form_photo = $formBuilderPhoto->getForm();
if ($request->getMethod() == 'POST') {
$form_photo->bind($request);
if ($form_photo->isValid()) {
// ...
}
}
return $this->render('MyBundle:frontend:photo.html.twig',
array('form_photo' => $form_photo->createView())
);
}
Знаете ли вы, что такое "важная" функция для добавления, чтобы загрузить фотографию и переименовать ее?
Как проверить расширение, чтобы узнать, возможна ли загрузка?
Каков ваш реальный способ сделать это с Symfony2? Я знаю, что есть много Bundle, которые делают все это для вас, но я хочу научиться делать это и понимать процесс.
Что такое "классический" способ реализации формы загрузки файлов и переименования с помощью Symfony2?