Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony]walidacja formularza
Forum PHP.pl > Forum > PHP > Frameworki
dtrevo
Przy walidacji wyskakuje bład:


You must pass an array parameter to the clean() method (this validator can only be used as a post validator).


Plik /lib/form/Uzytkownik.class.php

CODE

<?php

/**
* Uzytkownik form.
*
* @package nowy
* @subpackage form
* @author Your name here
* @version SVN: $Id: sfPropelFormTemplate.php 10377 2008-07-21 07:10:32Z dwhittle $
*/
class UzytkownikForm extends sfForm
{
public function configure()
{
$this->setWidgets(array(
'login'=> new sfWidgetFormInput(),
'haslo'=> new sfWidgetFormInputPassword(),
'powtorz'=> new sfWidgetFormInputPassword(),
'mail'=> new sfWidgetFormInput(),
));
$this->widgetSchema->setNameFormat('uzytkownik[%s]');


$this->widgetSchema->setLabels(array(
'login'=> 'Wprowadz login: ',
'haslo'=> 'Wprowadz hasło: ',
'powtorz'=> 'Powtorz haslo: ',
'mail'=> 'Wprowadz mail: '
));


$this->setValidators(array(
'login'=> new sfValidatorPropelUnique(array(
'model'=> 'Uzytkownik',
'column'=> 'login'),
array('invalid'=> 'login o tej nazwie juz istnieje')),
'haslo'=> new sfValidatorString(array(
'required'=>false, 'min_length'=> 6),
array('invalid'=> 'Hasło jest zbyt krótkie!')),
'mail'=> new sfValidatorEmail(array(), array('invalid'=> 'To ma byc prawdziwy E-mail!'))));


}

}



Controller

CODE

<?php

/**
* rejestracja actions.
*
* @package nowy
* @subpackage rejestracja
* @author Your name here
* @version SVN: $Id: actions.class.php 12479 2008-10-31 10:54:40Z fabien $
*/
class rejestracjaActions extends sfActions
{
/**
* Executes index action
*
* @param sfRequest $request A request object
*/
public function executeIndex($request)
{
$this->form = new UzytkownikForm();

if ($request->isMethod('post'))
{
$this->form->bind($request->getParameter('uzytkownik'));
if ($this->form->isValid())
{
$dane = $this->form->getValues();
$this->komunikat = 'super';
}
}
}



}



Widok:

CODE

<form method="post" action="<?php echo url_for('rejestracja/index'); ?>">
<?php echo $form; ?>
<input type="submit" name="rejestruj" />
</form>
<?php echo $komunikat; ?>


Pozdrawiam
thomas2411
Hmmm...nie widze ty validatorów, które sa post, dziwna sprawa...a spróbuj tak:

  1. <?php
  2. ....
  3. $this->form->bind($this->form->getValues());
  4. ...
  5. ?>


albo

  1. <?php
  2. ...
  3. $this->form->bind($this->form->getName());
  4. ...
  5. ?>
dtrevo
tak zmieniłem na
Kod
$this->form->getValues()


Dalej to samo, ale zauważyłem że coś w błędzie pisało o klasie sfValidatorPropelUnique, skasowałem, i działa.
destroyerr
Pewnie to coś w tym błędzie (zresztą jak cały błąd) miało duże znaczenie.
sfValidatorPropelUnique nie może być używany jako walidator dla pojedynczego pola. W Twoim przypadku powinien to być raczej post validator. Zresztą, gdybyś czytał błędy, nie musiabyś czekać na odpowiedź na forum.

@thomas2411 Twój post to po prostu żenada.
thomas2411
Cytat(destroyerr @ 7.06.2009, 10:20:16 ) *
Pewnie to coś w tym błędzie (zresztą jak cały błąd) miało duże znaczenie.
sfValidatorPropelUnique nie może być używany jako walidator dla pojedynczego pola. W Twoim przypadku powinien to być raczej post validator. Zresztą, gdybyś czytał błędy, nie musiabyś czekać na odpowiedź na forum.

@thomas2411 Twój post to po prostu żenada.


Żenada...yhym...rozumiem, dziękuję za konstruktywną krytykę.

Autor tematu czyta błędy, ale ich nie zrozumiał, dlatego zwraca się o pomoc na forum. Tak trudno to zrozumieć, trzeba być ironicznym? Wywyższać się że Ty wiesz i rozumiesz a ktoś inny nie? Czujesz się lepszy? Co jest z Tobą nie tak? Zastanów się trochę i przestać się tak dowartościowywać przez to forum. Jak chcesz pomóc to pomóż i daruj sobie jakieś komentarze. Opinie zachowaj dla siebie. Bo nikt Cię o to nie prosił.
destroyerr
Moim zdaniem mój post jest pomocny.
Trzeba być ironicznym. Wywyższać się, że się wie i rozumie. Czuję się lepszy. Wszystko jest ze mną nie tak.
Mógłbym walnąć pouczającego posta tak jak Ty, ale nie zrobię tego. Brakowało Ci argumentów? Proszę bardzo.
  1. <?php
  2. ....
  3. $this->form->bind($this->form->getValues());
  4. ...
  5. ?>

Wiesz, że ta konstrukcja oznacza podpięcie pod formularz pustej tablicy? Tak wiem, wywyższam się, bo mi chciało się sprawdzić a Tobie nie.
  1. <?php
  2. ...
  3. $this->form->bind($this->form->getName());
  4. ...
  5. ?>

To już jest finezja, która owocuję błędem php. Funkcja bind oczekuje jako pierwszy parameter tablicy, natomiast funkcja getName() zwraca string . Co jest tajemną wiedzą, która pozwala się wywyższać.

Teraz już rozumiesz co miałem na myśli pisząc o żenadzie. W tematach o których wiem niewiele staram się nie wypowiadać.
thomas2411
Więc wystarczyło napisać, że to co ja napisałem jest błędne. I nie uważam, że "Trzeba być ironicznym. Wywyższać się, że się wie i rozumie. Czuję się lepszy. Wszystko jest ze mną nie tak." - spytaj się kogokolwiek to zobaczysz co Ci odpowiedzą.

A irytuje mnie Twój sposób wypowiadania. Zamiast krótko i treściwie odpowiedzieć na pytanie autora tematu, rzucasz jakieś ironiczne teksty, przez co ludzie się zniechęcają do używana tego forum, bo stwierdzają, że jest tam grupa osób które mają się za tych co pozjadali wszystkie rozumy, chełpią się tym - co jest najgorsze i niskie, a ich wypowiedzi przez to mają wysoką entropię.

No ale nie będę się spierał, bo przecież jesteś mądrzejszy.
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.