Загрузка файлов в Symfony 2 с использованием sonata-проекта

Я пытаюсь загрузить изображение в Symfony 2 из бэкэнда с помощью sonata-project. Проблема, с которой я сталкиваюсь сейчас, состоит в том, чтобы вставить изображение в таблицу базы данных и загрузить по указанному пути. Я дал моей папке загрузки разрешения на запись. Я не уверен, что мне не хватает, но вот шаги, которые я предпринял.

class HomeEnumerate
{

// ...
protected function getUploadDir()
{
return 'uploads/houses';
}

protected function getUploadRootDir()
{
return __DIR__.'/../../../../web/'.$this->getUploadDir();
}

public function getWebPath()
{
return null === $this->house_picture ? null :   $this->getUploadDir().'/'.$this->house_picture;
}

public function getAbsolutePath()
{
return null === $this->house_picture ? null : $this->getUploadRootDir().'/'.$this->house_picture;
}

}

Я отредактировал мой HomeEnumerate.orm.yml, который я добавил в lifecycleCallbacks:

lifecycleCallbacks:
prePersist: [ preUpload, setCreatedAtValue, setExpiresAtValue ]
preUpdate: [ preUpload, setUpdatedAtValue ]
postPersist: [ upload ]
postUpdate: [ upload ]
postRemove: [ removeUpload ]

После того, как сгенерировать: сущности, я отредактировал свою сущность HomeEnumerate

class Job
{
// ...

/**
* @ORM\PrePersist
*/
public function preUpload()
{
if (null !== $this->file) {
$this->logo = uniqid().'.'.$this->file->guessExtension();
}
}

/**
* @ORM\PostPersist
*/
public function upload()
{
if (null === $this->file) {
return;
}

// If there is an error when moving the file, an exception will
// be automatically thrown by move(). This will properly prevent
// the entity from being persisted to the database on error
$this->file->move($this->getUploadRootDir(), $this->logo);

unset($this->file);
}

/**
* @ORM\PostRemove
*/
public function removeUpload()
{
if(file_exists($file)) {
if ($file = $this->getAbsolutePath()) {
unlink($file);
}
}
}

}

Может кто-нибудь, пожалуйста, помогите мне загрузить файлы в БД и путь к папке.

1

Решение

Вы должны также реализовать некоторые обратные вызовы в вашем классе администратора. На самом деле, SonataAdminBundle имеет рецепт поваренной книги по загрузке файлов. Надеюсь, он должен ответить на все ваши вопросы.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]