Как прокомментировал Mahok, Документы Symfony2 полезны здесь.
Я бы follow them с добавленными дополнениями. При сохранении документа, передавать имя пользователя:
if ($form->isValid()) {
$em = $this->getDoctrine()->getManager();
//get the user and pass the username to the upload method
$user = $this->get('security.context')->getToken()->getUser();
$document->upload($user->getUsername());
$em->persist($document);
$em->flush();
$this->redirect(...);
}
При загрузке файла, используйте имя пользователя:
public function upload($username)
{
if (null === $this->file) {
return;
}
//use the username for the route
$this->file->move(
"/public/$username/files/",
$this->file->getClientOriginalName()
);
// set the path property to the filename where you've saved the file
$this->path = $this->file->getClientOriginalName();
// clean up the file property as you won't need it anymore
$this->file = null;
}
Сохранение это таким образом вы не будете на самом деле нужно использовать дополнительные методы сущностей, как " getAbsolutePath»и т.д.
Обратите внимание, что вы, возможно, придется slugify имя пользователя, если вы принимаете пробелы и т.д.
Edit: Вам нужно будет настроить отношение oneToMany для пользователей к файлам, чтобы вы могли найти файл позже.
Взгляните на поваренную книгу «Как обрабатывать загрузки файлов с помощью доктрины»: http://symfony.com/doc/current/cookbook/doctrine/file_uploads.html – dbrumann
ах нет, я не был, не думал о Доктрине, по-прежнему очень новой для этого ха-ха. Спасибо за это. – ChaoticLoki