Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony2][SF2][SF] Validacja emaila
Forum PHP.pl > Forum > PHP > Frameworki
umatik
Z racji tego że nie za bardzo działa mi update composera, więc nie mam jak zainstalować dodatkowych bundli, oraz tego że Symfony dopiero rozgryzam, chciałem się zapytać jak mam sprawdzić, czy adres emial jest już zapisany w DB.

Mam formularz rejestracyjny, 3 pola: imię, nazwisko i email. Email ma być sprawdzany podczas validacji formularza, czy przypadkiem nie jest już zapisany, jak jest to funkcja loadValidatorMetadata w klasie encji Rejestracji powinna zwrócić błąd. Chciałem to zrobić za pomocą :
  1. $metadata->addConstraint(new Assert\Callback('validate'));

ale nie wiem jak mam się połączyć w takim przypadku do Doctrine w funkcji validate
  1. public function validate(ExecutionContextInterface $context) {}
semafor1985
ja używałem takiej oto konstrukcji w klasie Encji

  1. public static function loadValidatorMetadata($metadata)
  2. {
  3. $metadata->addConstraint(new UniqueEntity(array(
  4. 'fields' => 'email',
  5. 'message' => 'Podany email istnieje już w bazie danych.',
  6. )));
  7. }
umatik
Super!

Może zadam głupie pytanie, ale gdzie tu jest wskazanie na tabele w bazie ?
semafor1985
w formularzu masz odzwierciedlenie pola tabeli w encji
i tutaj odnosisz się do pola formularza, które z kolei odnosi się do pola encji (które odnosi się do pola w tabeli)
umatik
ok, użyłem UniqueEntity wg wskazówek z manuala, ale dostaję błąd:

Unable to find the object manager associated with an entity of class "Mac\RegisterBundle\Entity\Register"

hmm .. to możę trochę rozwinę/zmienię temat

A jak zrobić aby validator sprawdził czy w przypadku gdy adres został odnaleziony w bazie, ma ustawioną flagę na "skasowany" ?

Chciałbym odświeżyć temat.

Z racji na to że raczej nie kasuje się rekordów z bazy, tylko zmienia odpowiednią flagę, chciałbym się dowiedzieć jak mam sprawdzić czy wprowadzane dane spełniają dodatkowe warunki, nie tylko czy istnieją/nie istnieją ich odpowiedniki w bazie danych.

Fajnie jak by było aby proces sprawdzania dodatkowych warunków odbył się przy walidacji formularza.
kosmos
Twój ostatni post dotyczy kilku kwestii. Nie wiadomo, kórą z nich już rozwiązałeś, a która jest nadal otwarta.

Jesli chodzi o błąd to przydałoby się trochę kodu:
1. Co masz w kontrolerze?
2. Jak wygląda klasa obiektu odnosząca się do tabeli w bazie?
3. itd.

Masz już funkcjonalność związaną z aktualizacją flagi?
O jakich konkretnie warunkach mowa?
umatik
A no właśnie, nie chciałem zakładać nowego wątku, ponieważ już 2x udało mi się zduplikować moje pytania, a admini tego nie lubią.

Moje pytanie może jest trywialne, ale dopiero rozgryzam framework i nie wszystko jest dla mnie jasne i oczywiste.

Chodzi mi o prostą rejestrację login i pass. Login ma być podczas walidacji sprawdzany czy jest już zapisany w bazie danych, jeżeli jest to trzeba sprawdzić jaką ma flagę is_delete.

No i właśnie nie wiem jak mam do tego podejść, z tego co się do tej pory dowiedziałem, mogę sprawdzić czy jest już rekord w bazie, więc myślę że w równie prosty sposób można to sprawdzić jaką ma flagę a w zasadzie to mieć dostęp do wszystkich pól rekordu.

pedro84
Cytat(umatik @ 2.09.2014, 10:24:57 ) *
Chodzi mi o prostą rejestrację login i pass. Login ma być podczas walidacji sprawdzany czy jest już zapisany w bazie danych, jeżeli jest to trzeba sprawdzić jaką ma flagę is_delete.

http://symfony.com/doc/current/cookbook/va...constraint.html
umatik
ok, popróbuje dzięki za wskazówkę.
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.