Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Symfony]walidacja formularza
dtrevo
post
Post #1





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 5.12.2008

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


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

Ten post edytował dtrevo 6.06.2009, 08:22:06
Go to the top of the page
+Quote Post
thomas2411
post
Post #2





Grupa: Zarejestrowani
Postów: 108
Pomógł: 7
Dołączył: 15.05.2005
Skąd: Rzeszów

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


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. ?>
Go to the top of the page
+Quote Post
dtrevo
post
Post #3





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 5.12.2008

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


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.

Ten post edytował dtrevo 6.06.2009, 15:32:58
Go to the top of the page
+Quote Post
destroyerr
post
Post #4





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

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


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.
Go to the top of the page
+Quote Post
thomas2411
post
Post #5





Grupa: Zarejestrowani
Postów: 108
Pomógł: 7
Dołączył: 15.05.2005
Skąd: Rzeszów

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


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ł.
Go to the top of the page
+Quote Post
destroyerr
post
Post #6





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

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


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ć.
Go to the top of the page
+Quote Post
thomas2411
post
Post #7





Grupa: Zarejestrowani
Postów: 108
Pomógł: 7
Dołączył: 15.05.2005
Skąd: Rzeszów

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


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.
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: 18.09.2025 - 02:50