Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [ZendFramework] Problem z dekoratorem ViewScript przy elemencie typy "file"
Sajrox
post
Post #1





Grupa: Zarejestrowani
Postów: 254
Pomógł: 7
Dołączył: 9.10.2007
Skąd: Poznań

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


Witam serdecznie,

Dlaczego dekorowanie elementu innego typu niż "file" przy pomocy ViewScript nie spraswia problemu, gdy przy polu typu file są już problemy.

Tworze nowy element w mojej Klasie która dziedziczy po Zend_Form

  1. parent::addElement('file', 'zdjecie')
  2. ->getElement('zdjecie')
  3. ->setMaxFileSize(102400)
  4. ->addValidator('Extension', true, 'jpg,png,gif')
  5. ->addValidator('Size', true, 102400)
  6. ->addValidator('Count', true, 1)
  7. ->setDecorators(array(array('ViewScript', array('viewScript' => 'image.phtml'))));

NIestety to nie działa. jednak gdy zakomentuje ->setDecorators(... tworzy element file poprawnie.


Kod tworzący element typu text działa poprawnie wraz z dekoratorem ViewScript
  1. parent::addElement('text', 'zdjecieTxt')
  2. ->getElement('zdjecieTxt')
  3. ->setDecorators(array(array('ViewScript', array('viewScript' => 'image.phtml'))));


W chwili obecnej plik 'image.phtml' jest pusty.

Co może być tutaj przyczyną wchwili tworzenia elementu file z dekoratorem ?
Błąd jaki otrzymuje:
  1. Warning: Exception caught by form: No file decorator found... unable to render file element Stack Trace: #0 J:\wamp\www\ZendFramework-1.9.5\library\Zend\Form\Decorator\FormElements.php(101): Zend_Form_Element_File->render() #1 J:\wamp\www\ZendFramework-1.9.5\library\Zend\Form.php(2626): Zend_Form_Decorator_FormElements->render('') #2 J:\wamp\www\ZendFramework-1.9.5\library\Zend\Form.php(2641): Zend_Form->render() #3 J:\wamp\www\ZendFramework-1.9.5\application\MODULES\user\views\scripts\orders\add.phtml(1): Zend_Form->__toString() #4 J:\wamp\www\ZendFramework-1.9.5\library\Zend\View.php(108): include('J:\wamp\www\Zen...') #5 J:\wamp\www\ZendFramework-1.9.5\library\Zend\View\Abstract.php(833): Zend_View->_run('J:\wamp\www\Zen...') #6 J:\wamp\www\ZendFramework-1.9.5\library\Zend\Controller\Action\Helper\ViewRenderer.php(903): Zend_View_Abstract->render('orders/add.phtm...') #7 J:\wamp\www\ZendFramework-1.9.5\library\Zend\Controller\Action\Helper\ViewRenderer.php(924): Zend_Controller_Action_Helper_ViewRenderer->renderScr in J:\wamp\www\ZendFramework-1.9.5\library\Zend\Form.php on line 2646
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
batman
post
Post #2





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Problem nie leży po stronie addDecorator, czy setDecorators, a po stronie elementu oraz dekoratora File.
Element File wymaga, aby co najmniej jeden dekorator implementował interfejs Zend_Form_Decorator_Marker_File_Interface. W przeciwnym razie rzuci wyjątek. Dekorator ViewScript nie implementuje wspomnianego interfejsu i dlatego zgłaszany jest wyjątek.
Rozwiązaniem tego problemu jest stworzenie własnego dekoratora ViewScript dziedziczącego po Zend_Form_Decorator_ViewScript oraz implementującego interfejs Zend_Form_Decorator_Marker_File_Interface.
Go to the top of the page
+Quote Post
seth-kk
post
Post #3





Grupa: Zarejestrowani
Postów: 444
Pomógł: 79
Dołączył: 26.05.2009

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


Cytat(batman @ 4.12.2009, 08:28:46 ) *
Problem nie leży po stronie addDecorator, czy setDecorators, a po stronie elementu oraz dekoratora File...

Bezposrednio nie ale mysle ze sytuacja ma zapobiegac przypadkowemu usunieciu dekoratora file ktory dodaje dodatkowego inputa z max_file_size
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 26.12.2025 - 11:27