Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SF][Symfony2] Edycja produktu
Forum PHP.pl > Forum > PHP > Frameworki
M4ver7071
Witam, posiadam CRUD i gdy edytuje produkt to ścieżkę do zdjęcia produktu znajduje się w input Text. Chciałem dopisać dodatkowe pole input file gdyby wstąpiła potrzeba zmiany zdjęcia. Ale zapis cały do bazy odbywa się poprzez
  1. $em->persist($product);
  2. $em->flush ()
więc zapis jest automatyczny. Chcę dodać input file który w razie czego wyślę plik ale jeżeli w input jest pusty to żeby skrypt nie czyści danego pola w bazie. Jak rozbudować zapis produktów na poszczególne elementy ?
Forti
Wszystko definiujesz sobie przed tym presists -,- i formie.

Poczytaj o doctrine STOF uploadfile.
M4ver7071
No tak czytałem o tym, ale powiem szczerze nadal mam problem. Bo w opisie jest napisane dokładnie to co createFormBuilder mi generuje.. Nie wiem jak tego użyć
Forti
Przede wszystkim nie korzystaj z dokumentacji w symfony odnośnie uploadu. tylko poszukaj rozwiązań na stackoverflow.

  1. use Gedmo\Mapping\Annotation as Gedmo;
  2.  
  3. /**
  4.  * File
  5.  *
  6.  * @ORM\Table(name="you_name")
  7.  * @ORM\Entity
  8.  * @Gedmo\Uploadable(pathMethod="uploadPath", filenameGenerator="ALPHANUMERIC", allowOverwrite=false, appendNumber=true)
  9.  */
  10. class YouClass
  11. {
  12. public function uploadPath()
  13. {
  14. //..
  15. }
  16.  
  17. public function getRelativePath()
  18. {
  19. //..
  20. }
  21. }


Controller robisz:

  1. $uploadableManager->markEntityToUpload($entity, $files['image']['path']);


Musisz sam do tego dojść wink.gif
M4ver7071
W metodzie uploadPath przenoszę plik do odpowiedniego katalogu, a w metodzie getRelativePath zapisuje dane do bazy tak ?
Forti
Nie. Przeczytaj te nazwy metod i zgadnij co oznaczają wink.gif poszukaj w internecie.

Tutaj masz mój problem z przed jakiegoś czasu, na dzisiaj rozwiązany.

http://stackoverflow.com/questions/2877422...ld-not-be-found

Problemem były annotacje @assert - na file mimetype i size mają bugga i wymagają uploadu na nowo - tym się nie przejmuj wink.gif
M4ver7071
Ja próbowałem zrobić coś w ten deseń ale nie zapisuje mi do bazy pliku ani go nie wysyła
http://wklej.org/id/1660544/
Forti
Cytat(M4ver7071 @ 12.03.2015, 11:56:22 ) *
Ja próbowałem zrobić coś w ten deseń ale nie zapisuje mi do bazy pliku ani go nie wysyła
http://wklej.org/id/1660544/


a robisz w kontrollerze COŚ aby ten plik zapisać? Samo doctrine go nie zapisuje...

  1. $files = $request->files->all();
  2.  
  3. if ($form->isValid()) {
  4. $uploadableManager = $this->get('stof_doctrine_extensions.uploadable.manager');
  5. if (!empty($files['image']['path']) && $files['image']['path'] instanceof \Symfony\Component\HttpFoundation\File\UploadedFile) {
  6.  
  7. $uploadableManager->markEntityToUpload($entity, $files['image']['path']);
  8. }
  9. //..
  10. }


To ci powinno wystarczyć smile.gif
M4ver7071
Tak tylko Ty cały czas opierasz upload o dodatkowy bundle a ja bym chciał wykorzystać samo doctrine.
Forti
https://packagist.org/packages/gedmo/doctrine-extensions


Prędzej czy później zaczniej z tego korzystać. Gwarantuje Ci. Lepiej prędzej wink.gif
ikssde
Tutaj masz dobrze opisane jak to zrobić bez korzystania z dodatkowych bundli.

Według kodu z powyższego odnośnika, jeśli nie prześlesz pliku to pole z jego ścieżką nie będzie wyzerowane.
Forti
Cytat(ikssde @ 12.03.2015, 14:22:04 ) *
Tutaj masz dobrze opisane jak to zrobić bez korzystania z dodatkowych bundli.

Według kodu z powyższego odnośnika, jeśli nie prześlesz pliku to pole z jego ścieżką nie będzie wyzerowane.


To działa BARDZO źle. Dokumentacja symfony o upload plików jest strasznie słabo napisana i często występują z tym problemy. Oczywiście sam z tego korzystałem na początku, jednak jak już ogarnąłem gedmo to nic tego nie zastąpi, do prostych czynności ofc.
M4ver7071
Problem polega na tym, że zwykły upload mi działał smile.gif tylko problem polegał na tym że jak chciałem edytować ten produkt. Muszę przyjeć się rozwiązania które proponujecie.

Cytat(ikssde @ 12.03.2015, 14:22:04 ) *
Tutaj masz dobrze opisane jak to zrobić bez korzystania z dodatkowych bundli.

Według kodu z powyższego odnośnika, jeśli nie prześlesz pliku to pole z jego ścieżką nie będzie wyzerowane.




Widziałem to rozwiązanie ale to nie chodzi o sam upload.. Problem polega przy edycji.. Jak symfony automatycznie generuje formularz, bo ja wolałbym żeby nazwę pakował do inputa zwykłego a poniżej input#file i wtedy z input#file wgrywa się nowy plik albo zostaje stary.
Forti
No to stof i odpowiednie extension do tego napisane i się da. Ewentualnie na łatwizne i javascriptem wink.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.