Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Symfony] Validacja, Too many forwards have been detected for this request (> 5).
Lonas
post
Post #1





Grupa: Zarejestrowani
Postów: 576
Pomógł: 14
Dołączył: 9.11.2005

Ostrzeżenie: (20%)
X----


Hej - chce zwalidowac pole w formularzu - w katalogu validate dodalem plik yml o takiej samie jak akcja

Kiedy daje zatwierdzenie formularza otrzymuje komunikat

Too many forwards have been detected for this request (> 5).

  1. <?php
  2.     if ($this->getActionStack()->getSize() >= $this->maxForwards)
  3.     {
  4.       // let's kill this party before it turns into cpu cycle hell
  5.       throw new sfForwardException(sprintf('Too many forwards have been detected for this request (> %d).', $this->maxForwards));
  6.     }
  7. ?>


plik edit.yml wyglada tak
  1. methods:
  2. post: [name]
  3.  
  4. names:
  5. name:
  6. required: Yes
  7. required_msg: The name field cannot be left blank
- wciecia zachowalem tutaj sie rozjezdza

w action klas dodalem tez

  1. <?php
  2. public function handleErrorEdit()
  3.  {
  4.    $this->forward('gallery', 'edit');
  5.  }
  6. ?>


w czym problem ?

Ten post edytował Lonas 30.10.2008, 12:08:27
Go to the top of the page
+Quote Post
mike
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Żądanie akcji gallery/edit
Walidacja
Błąd, przekierowanie na akcję gallery/edit
Akcja gallery/edit
Walidacja
Błąd, przekierowanie na akcję gallery/edit
Akcja gallery/edit
Walidacja
Bład, ...
...

W handleError() wywal przekierowanie.
Go to the top of the page
+Quote Post
Lonas
post
Post #3





Grupa: Zarejestrowani
Postów: 576
Pomógł: 14
Dołączył: 9.11.2005

Ostrzeżenie: (20%)
X----


Dzieki,

Tylko wtedy szuka szablonu editError.php

A ja bym chcial zeby wrocil do szablonu edit i chce wyswietlic komunikat

bledy wyrzucam kodem - z manuala :

  1. <?php if ($sf_request->hasErrors()): ?>  
  2.  <div id="errors" style="padding:10px;">
  3.    Please correct the following errors and resubmit:
  4.    <ul>
  5.    <?php foreach($sf_request->getErrors() as $error): ?>
  6.      <li><?php echo $error ?></li>
  7.    <?php endforeach ?>
  8.    </ul>
  9.  </div>
  10. <?php endif ?>


Ten post edytował Lonas 30.10.2008, 12:11:21
Go to the top of the page
+Quote Post
mike
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Cytat(Lonas @ 30.10.2008, 12:10:04 ) *
Tylko wtedy szuka szablonu editError.php
  1. <?php
  2.  
  3. public function handleErrorEdit() {
  4.    return sfView::INPUT;
  5.    // bądź dowolny inny widok
  6. }
  7.  
  8. ?>
Go to the top of the page
+Quote Post
Lonas
post
Post #5





Grupa: Zarejestrowani
Postów: 576
Pomógł: 14
Dołączył: 9.11.2005

Ostrzeżenie: (20%)
X----


Nie rozumiem tego,

Na stronie http://trac.symfony-project.org/wiki/MyFir...nyProjectPolish
pisze ze trzeba mam miec plik yml - pozniej dodac akcje ze jak jest blad do wraca do edit i w edit jest komunikat o bledzie, dlaczego to tak nie dziala
Go to the top of the page
+Quote Post
mike
post
Post #6





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Cytat(Lonas @ 30.10.2008, 12:15:52 ) *
Na stronie http://trac.symfony-project.org/wiki/MyFir...nyProjectPolish
pisze ze trzeba mam miec plik yml - pozniej dodac akcje ze jak jest blad do wraca do edit i w edit jest komunikat o bledzie, dlaczego to tak nie dziala
No to jest źle napisane. To bardzo stary dokument. Olej go.

Wykonanie akcji jest poprzedzone walidacją, na którą składa się walidacja automatyczna (reguły w pliku .yml) i walidacja ręczna (wykonanie funkcji validate*() o ile ona istnieje). Jeśli walidacja przeszła to wykonywana jest akcja. Jeśli nie to wykonywana jest obsługa błędu, czyli funkcja handleError*()

Jesli chcesz żeby wyświetlił się ponownie widok EDIT to musisz sam o tym zadecydować bo domyślnym działaniem jest wyświetlenie widoku ERROR.
Go to the top of the page
+Quote Post
Lonas
post
Post #7





Grupa: Zarejestrowani
Postów: 576
Pomógł: 14
Dołączył: 9.11.2005

Ostrzeżenie: (20%)
X----


Rozumiem, ale kiedy zamiast pliku yml do klasy GalleryForm w funkcji configure dodam

  1. <?php
  2. $this->validatorSchema['name'] = new sfValidatorString(
  3.      array('required' => true),
  4.      array('required' => 'Podaj nazwe galerii'));
  5.    
  6.    $this->validatorSchema['visible'] = new sfValidatorString(
  7.      array('required' => true),
  8.      array('required' => 'Podaj numer'));
  9. ?>


to walidacja dziala tylko ze tutaj znowu komunikaty wyswietla obok pola i nie iwem gdzie moge ustawic te komunikaty tak jak ja bym chcial w szablonie


Pozostajac jednak przy pliku yml - jak moge wyswietlic widok EDIT ? bo tak nie dziala

  1. <?php
  2. public function handleErrorEdit() {
  3.     return sfView::EDIT;
  4.     // bądź dowolny inny widok
  5.  }
  6. ?>


Ten post edytował Lonas 30.10.2008, 12:30:44
Go to the top of the page
+Quote Post
AxZx
post
Post #8





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 55
Dołączył: 1.03.2005
Skąd: śląsk

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


mozesz zrobic
return 'edit'
wtedy plik to bedzie editedit

albo mozesz dac return sfview::success;
albo $this->settemplate('edit');
Go to the top of the page
+Quote Post
Lonas
post
Post #9





Grupa: Zarejestrowani
Postów: 576
Pomógł: 14
Dołączył: 9.11.2005

Ostrzeżenie: (20%)
X----


Jak zrobie tak

return $this->settemplate('edit');

to pisze że nie ma widoku editError

jak zrobie tak
return sfview::success;
to otrzymuje blad Fatal error: Undefined class constant 'success' in C:\Program F
Go to the top of the page
+Quote Post
mike
post
Post #10





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Skoro nie ma zmiennej success to sprawdź jakie są stałe w tej klasie. Tak ciężko to zrobić?
Zobaczysz wtedy, że jest stała SUCCESS
Go to the top of the page
+Quote Post
Lonas
post
Post #11





Grupa: Zarejestrowani
Postów: 576
Pomógł: 14
Dołączył: 9.11.2005

Ostrzeżenie: (20%)
X----


No dobra (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) przekierowywuje na widok edit - ale juz nie ma formularza i dostaje komunikat

Notice: Undefined variable: form in C:\Program Files\WebServ\httpd\gallery\apps\frontend\modules\gallery\templates\editSuccess.php on line 1

Fatal error: Call to a member function getObject() on a non-object in C:\Program Files\WebServ\httpd\gallery\apps\frontend\modules\gallery\templates\editSuccess.php on line 1


Tak chyba ta walidacja nie ma byc zrobiona - a czy tutaj jest aktualny artykul ?
http://www.symfony-project.org/tutorial/1_1/my-first-project
Go to the top of the page
+Quote Post
mike
post
Post #12





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Do tego posta sądziłem że piszesz w symfony 1.0 a to jest link do symfony 1.1
Go to the top of the page
+Quote Post
Lonas
post
Post #13





Grupa: Zarejestrowani
Postów: 576
Pomógł: 14
Dołączył: 9.11.2005

Ostrzeżenie: (20%)
X----


Nie wspomnialem ze pisze w symfony 1.1 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
mike
post
Post #14





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


A masz w ogóle włączoną kompatybilność wsteczną z 1.0
Bo to podejście do walidacji, które jest w tym wątku to jest old way :-)
Go to the top of the page
+Quote Post
Lonas
post
Post #15





Grupa: Zarejestrowani
Postów: 576
Pomógł: 14
Dołączył: 9.11.2005

Ostrzeżenie: (20%)
X----


Nie wlaczylem tego, jak wlacze to powinno dzialac ? czy lepiej robic juz new way (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

bo troche opisane jeszcze jest tutaj znalazlem
http://www.symfony-project.org/book/1_1/10...rm%20Validation

Ten post edytował Lonas 30.10.2008, 14:30:09
Go to the top of the page
+Quote Post
phpion
post
Post #16





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




Moim zdaniem olej stary sposób walidacji i zajmij się tylko nowym. Tutaj masz link do materiałów opisujących nowy sposób walidacji:
http://www.symfony-project.org/book/forms/...Form-Validation
Jest on dostępny w Symfony 1.1 oraz w późniejszych wersjach (przynajmniej w 1.2). Po co więc brnąć w coś, co już nie jest kontynuowane?
Go to the top of the page
+Quote Post
mike
post
Post #17





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Cytat(phpion @ 30.10.2008, 15:57:57 ) *
Moim zdaniem olej stary sposób walidacji i zajmij się tylko nowym. Tutaj masz link do materiałów opisujących nowy sposób walidacji:
http://www.symfony-project.org/book/forms/...Form-Validation
Jest on dostępny w Symfony 1.1 oraz w późniejszych wersjach (przynajmniej w 1.2). Po co więc brnąć w coś, co już nie jest kontynuowane?
Nowy sposób walidacji jest do bani. Ładnie wygląda i działa jak masz formularz. Jak masz żądanie GET to już jest lipa.
Go to the top of the page
+Quote Post
Lonas
post
Post #18





Grupa: Zarejestrowani
Postów: 576
Pomógł: 14
Dołączył: 9.11.2005

Ostrzeżenie: (20%)
X----


Uf no w koncu dziala, takie pytanie - komunikat wyswietlam tak

  1. <?php echo $form['name']->renderError() ?>


gdzie moge ustawic wyglad tego komunikatu ?

edit : ok znlazlem style.css (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

A czy jest mozliwosc ustawienia że jezeli jest komunikat o bledzie - aby podobnie jak w jquery klasa inputa sie zmienila zeby byla np czerwona ramka ?

Ten post edytował Lonas 31.10.2008, 14:12:34
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.08.2025 - 21:46