Symfony2 простое редактирование загрузки файлов без сущности

Пожалуйста, помогите мне здесь, потому что я не могу поверить своим глазам.

Я отказываюсь использовать какой-либо сторонний плагин для загрузки файлов и отказываюсь создавать отдельную сущность для файла / документа. Я просто хочу простую загрузку файлов, которую я сделал бы в Zend / Laravel и так далее.

У меня есть таблица счетов с последним именем «вложение», я хочу сохранить здесь его очищенное имя (например, 123421_filename.jpg), форма добавления и загрузка прошли хорошо.

код здесь:

//AddAction
     $file=$form['attachment']->getData();
        $fileName=$file->getClientOriginalName();
        $sanitizedFilename=rand(1, 99999).'_'.$fileName;
        $dir='files/'.$userId.'/';
        $file->move($dir, $sanitizedFilename);
    ...
        $invoice->setAttachment($sanitizedFilename);
        $em = $this->getDoctrine()->getManager();
        $em->persist($invoice);

Первая проблема, которую я имею и не знаю, как решить, это использовать форму редактирования .. У меня есть formbuilder

   $builder->add('attachment', 'file',array('data_class'=>null))

Поскольку у меня нет «Объекта» для моего файла и потому что в моей таблице счетов я сохраняю имя в виде строки, я получаю здесь ошибку, и мне нужно принудительно установить data_class => null .., что плохо, потому что если Я редактирую Инвойс во внешнем интерфейсе для поля загрузки. Я получаю NULL вместо имени файла текущего файла, связанного с инвойсом.

С:

$builder->add('attachment', 'text')

Я не получаю файл ввода просто глупое текстовое поле, но в это время - с именем в нем - ... так, как я могу решить это? Файл Виджет ввода и имя файла в нем без объекта Document ?!

И второй вопрос (я просто собираюсь выбросить все свои приложения, разработанные до сих пор, и перейти на laravel, потому что у меня было много «подобных проблем» .. делать простые вещи в Symfony почти всегда сложнее, чем в другие фреймворки ... или, может быть, я виноват в том, что я не хочу следовать указаниям и создавать сущность документа ?! Что если я хочу гибкости и хочу управлять своей базой данных другим способом, который не вписывается во все эти рекомендации? )

Поэтому я нахожусь в действии формы редактирования, я загружаю новый файл (не забывайте, что у меня установлен файл $ builder-> add ('attachment', file ', array (' data_class '=> null))

Я не могу получить имя строки вложения из текущего счета, который я редактирую? !

public function editAction($id)
   ....
   $invoice = $em->getRepository('AppBundle:Invoice')->find($id);
   ..
    if ($form->isValid()) {

            $oldFileName=$invoice->getAttachment();  //this is null
            $oldFileName=$invoice->getId();   //this returns the invoice id
            $oldFileName=$invoice->getValue(); //returns invoice value

                echo 'old: '.$oldFileName.'<br/>';
                exit();
     }

Итак, кто-то, пожалуйста, скажите мне, почему я не могу получить доступ к своей собственности на счета? Какая строка?

Я попытался создать новый экземпляр, хотя, как-то, если я создаю форму с объектом $ invoice, он как-то связывает его с вложением из формы редактирования.

 if ($form->isValid()) {
    $sameInvoice= $em->getRepository('AppBundle:Invoice')->find(20); //hardcoded ID

                   $oldFileName=$sameInvoice->getAttachment();   //still null
                   $oldFileName=$sameInvoice->getId();   //returns 20
                    echo 'old: '.$oldFileName.'<br/>';
                    exit();

Единственное, что я хотел, это иметь строку имени файла в моей таблице счетов и проверить, существует ли файл в пути с этим именем файла, и если он существует, то удалите его и загрузите новое и т. Д. Почему это происходит? должно быть так сложно ??

Почему я должен создать сущность? Почему я должен изменить свою структуру базы данных (здесь дело не в этом ... но что, если клиент не хочет, чтобы база данных была изменена ... поэтому я не могу вставить эту таблицу "Document") .. Почему можно ' Когда построитель форм показывает данные из invoice-> attachment, я понимаю, что ему нужны данные файла, и он не может принять строку, но почему нет руководства по этим простым задачам ?!

Ответы на вопрос(2)

Ваш ответ на вопрос