Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [symfony1.1] Wyświetlanie komunikatu o niepowodzeniu walidacji
Forum PHP.pl > Forum > PHP > Frameworki
Virti
Witam wszystkich.
Mam problem z walidacją formularza, mam taką klasę:

  1. <?php
  2. class UserForm extends BaseUserForm
  3. {
  4.   const REQUIRED = 'This field is required';
  5.   
  6.   public function configure()
  7.   {
  8.       parent::setup();
  9.    
  10.       $this->setValidators(array(
  11.       'nick' => new sfValidatorString(array('min_length' => 4, 'required' => true), array('required' => self::REQUIRED)),
  12.     ));
  13.   }
  14. }
  15. ?>



oraz sprawdzanie wysłanego formularza [cała akcja]:

  1. <?php
  2. class userActions extends autouserActions
  3. {    
  4.    public function executeEdit()
  5.    {
  6.        $request = $this -> getRequest();
  7.        $this -> user = $this -> getUserOrCreate();
  8.        $this -> form = new UserForm();
  9.        
  10.        if(sfRequest::POST == $request -> getMethod())
  11.        {
  12.            $this -> form -> bind($request -> getParameter('user'));
  13.            
  14.            //wysłano formularz
  15.            if($this -> form -> isValid())
  16.            {
  17.                exit('ok');
  18.            }
  19.            
  20.        }
  21.        //formularz do wyświetlenia        
  22.        $this->labels = $this->getLabels();
  23.    }
  24. }
  25. ?>


Mój problem polega na tym, że według tego tekstu: http://www.symfony-project.org/book/forms/...Form-Validation po nie przejściu walidacji (czyt. pole nick jest puste lub wartość jest krótsza niż 4) automatycznie powinien zostać wygenerowany formularz wraz z komunikatem o błędzie przy polu, którego on dotyczy. Niestety tak się nie dzieje. winksmiley.jpg Oczywiście formularz zostaje wyświetlony, bo $this -> form -> isValid() = false, jednak żadnego błędu nie dostaję.

Mógłby mi ktoś z tym pomóc? Gdzie mam błąd, ew. w jaki inny sposób wprowadzić walidację formularza dla Symfony 1.1?

Wiem, że ten temat był już wałkowany wiele, wiele razy, niestety nigdzie nie znalazłem rozwiązania mojego problemu.

Pozdrawiam,
Virti
destroyerr
Przede wszystkim strasznie dziwny kod. Pomieszane wersje symfony, nie przekazujesz obiektu usera do obiektu formularza.

Nie wiem czemu nie wyświetlane są błędy, bo nie wiem jak wyświetlasz formularz. Zacznij od pokazania tego.
Virti
Formularz jest generowany admin-generatorem, z pliku yml:
Kod
generator:
  class:              sfPropelAdminGenerator
  param:
    model_class:      User
    theme:            default
    
    fields:
      nick:
        required: true
        required_msg: This field is required
        sfStringValidator:
          min: 3
          min_error: This nick is too short (3 characters minimum)
          max: 16
          max_error: This name is too long. (16 characters maximum)
    
      description:
        type: textarea_tag
        params: rich=true
        help: Short description of the user
    
    edit:
      display:
        "Authorization": [nick,_password]
        "Other": [name,description,mail]
        "Watermark": [watermark]

Co do pomieszanych wersji symfony, masz rację, po prostu w pewnym momencie jechałem z dokumentacji i każdej innej strony jaką spotkałem po drodze, stąd ten syf winksmiley.jpg

Pozdrawiam.
destroyerr
Teraz to przegiąłeś. Formularz masz z werjsi 1.1 a admin generator z 1.0. To nie zadziała.

Wersja 1.1 jest wersją przejściową. Zacznij korzystać z 1.2, co prawda beta, ale zanim nauczysz się z tego frameworka korzystać to wszelkie błędy zostaną naprawione. W tej wersji admin generator w pełni działa z nowymi formularzami.
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.