Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Symfony] Jak ustawić globalny komunikat błędu u góry formularza?, Symfony 1.1
symfonic
post
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 10.11.2008

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


Witam,

Stworzyłem w Symfony 1.1 prosty formularz kontaktowy. Chciałbym jeszcze, żeby w przypadku jakiegokolwiek błędu (np. nie wypełnione któreś z wymaganych pól) wyświetlał się nad formularzem ogólny komunikat błędu typu "Formularz zawiera błędy". Jak coś takiego zrobić?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
Cysiaczek
post
Post #2





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Dziwne pytanie zadajesz. Odpowiedź na nie można znaleźć w dokumentacji.
  1. <?php
  2. if($sf_request->hasErrors())
  3. {
  4.    foreach($sf_request->getErrors() as $error)
  5.    {
  6.        print $error;
  7.    }
  8. }
  9. ?>

Nie wiem, czy w SF 1.1 jest tak samo, bo do tej pory nie miałem z nim przyjemności.
Pozdrawiam
Go to the top of the page
+Quote Post
symfonic
post
Post #3





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 10.11.2008

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


Niestety w Symfony 1.1 już to nie przejdzie. Dlatego pytam. Dokumentacje przeczytalem.
Go to the top of the page
+Quote Post
phpion
post
Post #4





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Cytat(symfonic @ 10.11.2008, 14:42:42 ) *
Niestety w Symfony 1.1 już to nie przejdzie.

Na pewno? http://www.symfony-project.org/api/1_1/sfR...ethod_geterrors
Go to the top of the page
+Quote Post
symfonic
post
Post #5





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 10.11.2008

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


Ja naprawde sprawdzilem duzo mozliwosci i zajrzalem na dziesiatki stron zanim zadalem pytanie na forum (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) . Uzycie hasErrors wywala wyjatek "You must set "compat_10" to true if you want to use this method which is deprecated.".
Go to the top of the page
+Quote Post
phpion
post
Post #6





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Użyj w takim razie metody hasErrors():
  1. <?php if ($sf_request->hasErrors()): ?>
  2. <p>Wystąpiły błędy!</p>
  3. <?php endif; ?>
Go to the top of the page
+Quote Post
symfonic
post
Post #7





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 10.11.2008

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


Wlasnie o tej metodzie napisalem w poprzednim poscie.
Go to the top of the page
+Quote Post
Cysiaczek
post
Post #8





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Dziwne, bo metoda jest w dokumentacji. więc formalnie można tego użyć.
Jeśli nie działa, to może użyj flasha. Ja tak robię dla pojedynczych komunikatów błędów i potwierdzeń. Jest o tyle dobre, że działa pomiędzy przekierowaniami.

Pozdrawiam.
Go to the top of the page
+Quote Post
destroyerr
post
Post #9





Grupa: Zarejestrowani
Postów: 879
Pomógł: 189
Dołączył: 14.06.2006
Skąd: Bytom

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


W dokumentacji nie podano, że do działania tych metod w sf 1.1 trzeba mieć plugin compat_10. W następnych wersjach nie będzie już całkowicie.

Nie zrozumiałem czy chcesz już wyświetlać ten error, czy go dopiero stworzyć. Jeśli wyświetlić tylko to formularz ma funkcje getGlobalErrors.

Przepraszam, miałem napisać o renderGlobalErrors.

Ten post edytował destroyerr 10.11.2008, 18:19:37
Go to the top of the page
+Quote Post
-=Peter=-
post
Post #10





Grupa: Zarejestrowani
Postów: 304
Pomógł: 51
Dołączył: 4.02.2005
Skąd: Kraków

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


Może chodzi Ci o coś takiego:

  1. <?php if(count($form->getErrorSchema()) > 0): ?>
  2. Wystąpiły następujące błędy:
  3. <ul>
  4. <?php foreach($form->getErrorSchema() as $field => $text): ?>
  5. <li><?php echo $text ?></li>
  6. <?php endforeach; ?>
  7. </ul>
  8. <?php endif; ?>


Ten post edytował -=Peter=- 10.11.2008, 17:30:43
Go to the top of the page
+Quote Post
symfonic
post
Post #11





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 10.11.2008

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


Peter, dzięki! O to właśnie mi chodziło :-). Choć pewnie jest to rozwiązanie "na około", bo Symfony ma już wbudowane wyświetlanie globalnego błędu w formularzu. Potrafię z niego skorzystać przy post validatorze. Wystarczy dodać opcję throw_global_error i już nad formularzem pojawi się piękny komunikat błędu (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

  1. <?php
  2. $this->validatorSchema->setPostValidator(
  3.  new sfValidatorSchemaCompare('start_date', sfValidatorSchemaCompare::LESS_THAN_EQUAL, 'end_date',
  4.    array('throw_global_error' => true),
  5.    array('invalid' => 'The start date ("%left_field%") must be before the end date ("%right_field%")')
  6.  )
  7. );
  8. ?>
Go to the top of the page
+Quote Post

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: 23.12.2025 - 11:36