Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [ZF] Zend_Form_Element_File - błąd uploadu, ale plik wrzuca się
IceManSpy
post 27.03.2012, 15:08:12
Post #1





Grupa: Zarejestrowani
Postów: 1 006
Pomógł: 111
Dołączył: 23.07.2010
Skąd: Kraków

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


Witam

Napotkałem się dzisiaj na kilka dziwnych problemów z powyższym komponentem.

Problemy:
1. Pokazuje błąd odbioru obrazka, a na serwer go wrzuca (pojawia się folder w docelowym folderze i jest przetwarzany dalej formularz).
2. Po walidacji formularza, jesli nie podam obrazka to zostaje wyświetlony ponownie formularz z wypełnionymi danymi (pole do pliku jest puste). Kiedy jednak zostanie wskazana ścieżka do obrazka (po wcześniejszym nie podaniu), który chcemy wrzucić to dostaję komunikat "Too many files, maximum '1' are allowed but '2' are given", chociaż jest tylko jeden wrzucany.

Jak rozwiązać powyższe problemy? Może robię coś w złej kolejności?

Fragment formularza:
  1. $image = new Zend_Form_Element_File('image');
  2. $image->setLabel('Dodaj zdjęcie główne: ');
  3. $path = realpath(APPLICATION_PATH.'/../public/images');
  4. $image->setDestination($path);
  5. $image->setRequired(true);
  6.  
  7. $image->addValidator('count',false,1);
  8. $image->addValidator('size',false,1024000);
  9. $image->addValidator('extension',false,array('jpg'));

Kod z kontrolera odpowiedzialnego za obsługę formularza:
  1. $form_offer = new Offer_Form_AddOffer();
  2. $form_offer->getElement('image')->addFilter('Rename',APPLICATION_PATH.'/../public/images/'.$image_name);
  3.  
  4. if($this->_request->isPost() && $form_offer->isValid($_POST) && $form_offer->getValue('image') != null)
  5. {
  6. if (!$form_offer->image->receive()) {
  7. $this->view->error = "Error receiving the file";
  8. }
  9.  
  10. //Pobranie danych za pomoca getValue i dalsze ich przetwarzanie
  11. // ale nie robię $form_offer->getValue('image')
  12.  
  13. $form_offer->reset();
  14.  
  15. $this->view->confirm = true;
  16. }
  17. if($form_offer->isErrors())
  18. {
  19. $form_offer->populate($_POST);
  20. }


==== EDYCJA ====
Problem rozwiązałem. Przyczyną tego było w złym miejscu postawienie warunku na odbiór pliku w kontrolerze. Tak wygląda poprawiony plik:
  1. if($this->_request->isPost() && $form_offer->isValid($_POST) && $form_offer->getValue('image') != null)
  2. {
  3. //Pobranie danych i operacje na nich
  4.  
  5. //resetowanie formularza
  6. $form_offer->reset();
  7.  
  8. $this->view->confirm = true;
  9. }
  10. else
  11. {
  12. if ($this->_request->isPost() && !$form_offer->getElement('image')->receive() && $form_offer->getValue('image') != null) {
  13. $this->view->error = "Error receiving the file";
  14. }
  15. }
  16. if($form_offer->isErrors())
  17. {
  18. $form_offer->populate($_POST);
  19. }


Ten post edytował IceManSpy 27.03.2012, 15:37:59


--------------------
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 Wersja Lo-Fi Aktualny czas: 14.08.2025 - 06:44