Witam,
swoją stronkę chciałbym wzbogacić o prosty formularz kontaktowy pozwalający na wysłanie maila pod zadany adres. Wzoruję się na tym tutorialu: http://old.karolnowicki.pl/zend-framework/...omia-zend_form/. Po przejściu do podstrony z formularzem dostaję: "An error occurred Application error" w części zarezerwowanej dla treści z widoku. Poniżej kod:

/application/forms/Kontakt.php
  1. <?php
  2.  
  3. class Application_Form_Kontakt extends Zend_Form
  4. {
  5. public function init()
  6. {
  7. $sender = $this->createElement('text', 'sender');
  8. $sender ->setLabel('Twoje imię i nazwisko:')
  9. ->setRequired(TRUE)
  10. ->setAttrib('size', 50)
  11. ->addFilters(array(
  12. new Zend_Filter_StringTrim(),
  13. new Zend_Filter_StripNewlines(),
  14. new Zend_Filter_StripTags()
  15. ))
  16. ->addValidators(array(
  17. new Zend_Validate_NotEmpty(),
  18. new Zend_Validate_StringLength(5, 100)
  19. ));
  20.  
  21. $email = $this->createElement('text', 'email');
  22. $email ->setLabel('Twój adres email:')
  23. ->setRequired(TRUE)
  24. ->setAttrib('size', 50)
  25. ->addFilters(array(
  26. new Zend_Filter_StringToLower(),
  27. new Zend_Filter_StringTrim(),
  28. new Zend_Filter_StripNewlines(),
  29. new Zend_Filter_StripTags()
  30. ))
  31. ->addValidators(array(
  32. new Zend_Validate_NotEmpty(),
  33. new Zend_Validate_StringLength(5, 100),
  34. new Zend_Validate_EmailAddress()
  35. ));
  36.  
  37. $subject = $this->createElement('text', 'subject');
  38. $subject->setLabel('Temat wiadomości:')
  39. ->addFilters(array(
  40. new Zend_Filter_StringTrim(),
  41. new Zend_Filter_StripNewlines(),
  42. new Zend_Filter_StripTags()
  43. ))
  44. ->addValidators(array(
  45. new Zend_Validate_NotEmpty()
  46. ))
  47. ->addMultiOptions(array(
  48. ''=>'Wybierz temat wiadomości',
  49. 'kontakt'=>'Prośba o kontakt',
  50. 'pomoc'=>'Pomoc',
  51. 'blad'=>'Błąd na stronie'
  52. ));
  53.  
  54. $text = $this->createElement('textarea', 'text');
  55. $text ->setLabel('Treść wiadomości:')
  56. ->setRequired(TRUE)
  57. ->setAttrib(array(
  58. 'cols'=>50,
  59. 'rows'=>10
  60. ))
  61. ->addFilters(array(
  62. new Zend_Filter_StringTrim(),
  63. new Zend_Filter_StripTags()
  64. ))
  65. ->addValidators(array(
  66. new Zend_Validate_NotEmpty(),
  67. new Zend_Validate_StringLength(5, 100)
  68. ));
  69.  
  70. $this->addElement(array(
  71. $sender,
  72. $email,
  73. $subject,
  74. $text,
  75. array('submit', 'submit', array('label'=>'wyślij'))));
  76. }
  77. }


/application/controllers/indexController.php
  1. <?php
  2.  
  3. class IndexController extends Zend_Controller_Action
  4. {
  5. public function kontaktAction()
  6. {
  7. $form = new Application_Form_Kontakt();
  8. $form->setAction('wyslano')->setMethod('post'); // $this->_forward('wyslano'); //
  9. $this->view->form = $form;
  10. }
  11.  
  12. public function wyslanoAction()
  13. {
  14. // Tu chcę przetworzyć formularz i wysłać maila, o ile wcześniej uda mi się poprawnie wyświetlić...
  15. }
  16. }


/application/wievs/scripts/index/kontakt.phtml
  1. <?php $this->headTitle()->append('kontakt'); ?>
  2. <div id="contact-pic">
  3. <img src="<?php echo $this->baseUrl() . '/site_gallery/contact.jpg' ?>" />
  4. </div>
  5. <div id="contact-form">
  6. <?php echo $this->form; ?>
  7. </div>


Próba utworzenia obiektu klasy Application_Form_Kontakt wywołuje ten błąd. Mam ustawione pokazywanie błędów w application.ini ale poza wspomnianym komunikatem nic się nie wyświetla.

EDIT:
Problem rozwiązany.
Przeoczyłem, że "resources.frontController.params.displayExceptions" w pliku applicatnion.ini miało ustawione wartość "0" przez co nie widziałem pełnych komunikatów błędu aplikacji. Po przestawieniu okazało się, że w pliku Kontakt.php są dwa błędy:
1. addMultiOptions() - taka metoda nie istnieje - całe pole formularza zastąpiłem nieco inną konstrukcją.
2. metoda setAttrib() przyjmuje dwa argumenty, jeśli chcemy podać ich więcej (np. w tablicy jak w kodzie powyżej) to musimy zastosować metodę setAttribs().