Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Symfony] upload w adminie za pomocą sfWidgetFormInputFileEditable, symfony 1.2
Foxx
post
Post #1





Grupa: Zarejestrowani
Postów: 896
Pomógł: 76
Dołączył: 15.11.2003
Skąd: Sosnowiec/Kraków

Ostrzeżenie: (0%)
-----


Witajcie, mam problem z uploadem plików za pomocą widgetu sfWidgetFormInputFileEditable w wygenerowanym Adminie.
Gdy stosuję sfWidgetFormInputFile to problem jest ten sam, a mianowicie:

Plik ładuje się we wskazane miejsce.
Nie ma wpisu w bazie.

Dam głowę, że to co zrobiłem w pliku lib/form/FilmForm.class.php, w metodzie configure() jest prawidłowe oraz dam głowę, że druga metoda, którą dodałem w tej klasie jest albo błędna albo powinna być w innym miejscu.
Ale pół nocy przekopywałem net i nie trafiłem na czytelny przykład. Niestety nie jestem jeszcze na tyle biegły w 1.2 żeby bez problemów dostosowywać wszystko do Generatora... Proszę was o wskazówkę, gdzie powinienem wrzucić obsługę ładowanego pliku, jaka to powinna być metoda i czy wnętrze mojej będzie działać?

lib/form/FilmForm.class.php:

  1. <?php
  2. public function configure()
  3. {
  4.        
  5.  $this->widgetSchema['plakat'] = new sfWidgetFormInputFileEditable(array(
  6.    'label'     => 'Plakat',
  7.    'file_src'  => '/uploads/plakaty/'.$this->getObject()->getPlakat(),
  8.    'delete_label' => 'Usuń ten plik',
  9.    'is_image'  => true,
  10.    'edit_mode' => !$this->isNew(),
  11.  ));
  12.      
  13.  //$this->widgetSchema['plakat'] = new sfWidgetFormInputFile();
  14.  $this->validatorSchema['plakat'] = new sfValidatorFile();
  15.        
  16. }
  17.  
  18. public function updateObject($values = null)
  19. {
  20.  $object = parent::updateObject();
  21.  
  22.  $file = $this->getValue('plakat');
  23.  $filename = 'uploaded_'.sha1($file->getOriginalName());
  24.  $extension = $file->getExtension($file->getOriginalExtension());
  25.  $file->save(sfConfig::get('sf_upload_dir').'/plakaty/'.$filename.$extension);
  26.  
  27. }
  28. ?>


---------------- UPDATE ---------------------

Poczyniłem pewne postępy, zmodyfikowałem updateObject() i teraz plik ładuje się na serwer a do bazy jest wstawiana jego nazwa. Niestety z całą bezwzględną ścieżką do pliku. Więc moje pytania są teraz następujące:

1. Czy miejsce, w którym umieściłem updateObject() jest właściwe (lib/form/FilmForm.class.php)

2. Czy to powinna być metoda updateObject()? Czemu nie save() jak np. tu: http://www.symfony-project.org/forms/1_2/e...the_save_method

3. W jaki sposób zapisać do bazy tylko nazwę pliku, bez ścieżki bezwzględnej z komputera, z którego pochodzi plik?

Obecnie kod metody updateObject() wygląda tak:
  1. <?php
  2. public function updateObject($values = null)
  3. {
  4.  if (file_exists($this->getObject()->getPlakat()))
  5.  {
  6.    unlink($this->getObject()->getPlakat());
  7.  }
  8.    
  9.  $file = $this->getValue('plakat');
  10.  $filename = 'uploaded_'.sha1($file->getOriginalName());
  11.  $extension = $file->getExtension($file->getOriginalExtension());
  12.  $file->save(sfConfig::get('sf_upload_dir').'/plakaty/'.$filename.$extension);
  13.        
  14.  return parent::updateObject();
  15. }
  16. ?>

?>[/php]

Ten post edytował Foxx 28.07.2009, 09:01:17
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 08:17