Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Symfony] Problem z sfValidatorPropelUnique
blackroger
post
Post #1





Grupa: Zarejestrowani
Postów: 176
Pomógł: 0
Dołączył: 8.11.2008

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


Witam. Mam problem dotyczący sfValidatorPropelUnique. Wszystko działa jak należy przy rejestracji tylko chcę go wykorzystać do zmiany danych użytkownika. Problem pojawia w momencie próby zmiany powiedzmy loginu który jest unikalny.
  1. $this->validatorSchema->setPostValidator(new sfValidatorAnd(array(
  2. new sfValidatorPropelUnique(
  3. array('model'=>'Uzytkownicy',
  4. 'column'=>'login'),
  5. array('invalid'=>'Podany login już istnieje'))
  6. ..........
  7. ....
  8. ...
  9. )));


Jak zrobić żeby ten walidator szukał unikalności tylko i wyłącznie dla wszystkich loginów różnych od loginu który jest aktualnie używany przez tego użytkownika. Powiedzmy że login jest Jasiu i użytkownik pozostawia przy zmianie login taki sam, to postwalidator poinformuje ze taki w bazie istnieje, a nie powinien. Natomiast jak użytkownik zmieni login z Jasiu na Janek, a taki login bedzie już przydzielony do innego id to ma poinformowac o zajętości. Wiem że można to zrobić poprzez bezpośrednie zapytania sqlowe i redukcją danego loginu ale chciałbym to zrobić za pomocą sfValidatorPropelUnique. CZy jest taka możliwość? A jeżeli nie ma to proszę o jak najlepsze rozwiązanie.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Pr0100
post
Post #2





Grupa: Zarejestrowani
Postów: 114
Pomógł: 24
Dołączył: 18.01.2008
Skąd: Warszawa

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


Cytat
za pomocą powiedzmy $u->setName(), $u->setImie() itd ustawiam wartości poszczególnych pól


i w ten sposób Symfony myśli że chcesz stworzyć nowego usera o takim samych danych, gdyby nie error w login to byś dostałbyś pewnie identyczny błąd dotyczący kolumny id. To trochę tak jakbyś chciał zrobić coś w tym stylu:

  1. $user = new User();
  2. $user->setLogin( 'Adam' );
  3. $user->save();
  4.  
  5. $user_edit = new User();
  6. $user_edit->setLogin('Adam');
  7. $user_edit->setId( $user->getId() );
  8. $user_edit->save();


Bez sensu. Aby uzyskać edycje danych należy zrobić to co napisałem w poprzednim poście.

Cytat
Czyli w momencie wejścia na akcję edycja, w formularzu są już wszystkie widoczne dane użytkownika które można zmieniać


jeżeli dobrze rozumiem to przypisujesz dane w pliku UserForm? (IMG:style_emoticons/default/blink.gif) pokaż kod źródłowy formularza i akcji bo coś mi się wydaje że tworzysz jakiś nowy standard pisania w Symfony (IMG:style_emoticons/default/winksmiley.jpg)

Ten post edytował Pr0100 19.09.2009, 22:18:28
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 7.10.2025 - 10:30