Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ZF] Problem z zastosowaniem filtra 'StripTags'
Forum PHP.pl > Forum > PHP > Frameworki
d_hrabia
Witam, utowrzyłem sobie formularz z polem typu "textarea" w Zend. Mam problem z zastosowaniem filtra 'StripTags', ponieważ gdy w pole wpisujęprzykładowo kod:
  1. <b>aaaaa</b>sssss

To znaczniki <b> oraz </b> są wykonywane i teks jest pogrubiany. Czy przypadkiem zastosowany filtr nie powinien temu zapobiegać?

  1. $pole = new Zend_Form_Element_Textarea('pole');
  2. $this->addElement($pole);
  3. $pole->setLabel("Dodatkowe informacje/uwagi:");
  4. $validators = array(
  5. array('validator'=>'StringLength','options'=>array(0,200))
  6. );
  7. $filters = array(
  8. 'StringTrim',
  9. 'StripTags'
  10. );
  11. $decorators = array(
  12. 'ViewHelper',
  13. 'Errors',
  14. 'Description',
  15. array('HtmlTag',array('tag' => 'dd')),
  16. array('Label', array('tag'=>'dt'))
  17. );
  18. $pole->setDecorators($decorators)
  19. ->addFilters($filters)
  20. ->addValidators($validators)
  21. ->setRequired(true)
  22. ->setAttrib('COLS', '40')
  23. ->setAttrib('ROWS', '4');
MickDev
Może to pomoże


Pozdrawiam
d_hrabia
Cytat(MickDev @ 7.01.2011, 15:59:47 ) *



Nie wiem, czy dobrze zrozumiałem (chyba nie), ale zrobiłem tak:

Plik z formularzem:
  1. class Form_RejestracjaForm extends Zend_Form
  2. {
  3. public function __construct($options = null) {
  4. parent::__construct($options);
  5. }
  6. public function init(){
  7. $this->setMethod('post');
  8. $this->setName('rejestracja');
  9.  
  10. $pole = new Zend_Form_Element_Textarea('pole');
  11. $this->addElement($pole);
  12. $pole->setLabel("Dodatkowe informacje/uwagi:");
  13. $validators = array(
  14. array('validator'=>'StringLength','options'=>array(0,200))
  15. );
  16. $filters = array(
  17. 'StringTrim',
  18. 'StripTags'
  19. );
  20. $decorators = array(
  21. 'ViewHelper',
  22. 'Errors',
  23. 'Description',
  24. array('HtmlTag',array('tag' => 'dd')),
  25. array('Label', array('tag'=>'dt'))
  26. );
  27. $pole->setDecorators($decorators)
  28. ->addFilters($filters)
  29. ->addValidators($validators)
  30. ->setAttrib('COLS', '40')
  31. ->setAttrib('ROWS', '4');
  32. }


Kontroler:
  1. class RejestracjaController extends Zend_Controller_Action
  2. {
  3. public function init()
  4. {
  5. $this->form = new Form_RejestracjaForm();
  6. }
  7.  
  8. public function indexAction()
  9. {
  10. if ($this->_request->isPost())
  11. {
  12. $formData = $this->_request->getPost();
  13. if ($this->form->isValid($formData))
  14. {
  15. return $this->_forward('poprawne');
  16. }
  17. else
  18. {
  19. $this->form->populate($formData);
  20. }
  21. }
  22. $this->view->form = $this->form;
  23. }
  24.  
  25. public function poprawneAction()
  26. {
  27. $this->view->dane = $this->form->getValue('pole');
  28. }
  29. }


No i akcja 'poprawne':
  1. echo $this->dane;



I niestety nie działa - nie przesyła nic.
MickDev
Spróbuj wyświetlić te dane bezpośrednio po sprawdzeniu isValid(). Zamiast przekierowania w 15 linii, wstaw to:

  1. $dane = $this->form->getValue('pole');
  2. echo $dane;
d_hrabia
Działa, tylko dlaczego nie działa w nowej akcji?

EDIT:
Udało się...

  1. public function poprawneAction()
  2. {
  3. $formData = $this->_request->getPost();
  4. $this->form->isValid($formData);
  5. $dane = $this->form->getValue('pole');
  6. echo $dane;
  7. }


Należało w nowej akcji ponownie zwalidować dane.

Dzięki za pomoc smile.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.