Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Symfony] Dokładne przyrównania w metodach sprawdzających błędy formularzy
eerie
post
Post #1





Grupa: Zarejestrowani
Postów: 114
Pomógł: 0
Dołączył: 3.08.2017

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


O ile się nie mylę, formularz w Symfony zwraca wartości w postaci niepustego string'a lub null'a dla braku wartości. Zaleca się, aby stosować dokładne przyrównania (===) wszędzie tam, gdzie to jest możliwa. W związku z tym mam wątpliwość, czy zapis z kodu poniżej jest poprawny:

Kod
    /**
     * @Assert\IsFalse(
     *     message="Strona www musi rozpoczynać się od znaków: http://"
     * )
     */
    public function isUrlValid(): bool
    {
        $urlValid = $this->url != ''
            && substr($this->url, 0, 7) != 'http://'
            && substr($this->url, 0, 8) != 'https://';

        return $urlValid;
    }


Czy nie powinienem zapisywać to w ten sposób (przyrównanie do null'a):

Kod
    /**
     * @Assert\IsFalse(
     *     message="Strona www musi rozpoczynać się od znaków: http://"
     * )
     */
    public function isUrlValid(): bool
    {
        return $this->url !== null
            && substr($this->url, 0, 7) !== 'http://'
            && substr($this->url, 0, 8) !== 'https://';
    }


Poza tym lepiej będzie chyba, jeśli return zwróci wynik bezpośrednio z równania, a nie ze zmiennej. Do tego (link poniżej) chyba źle nazwałem dwie metody sprawdzające. Powinno być isNewAndRepeatPasswordGiven() zamiast isNewOrRepeatPasswordGiven(). A także isNotUserEmail() zamiast isUserEmail().

https://github.com/webeeq/symfony.eeq/blob/...ditUserForm.php
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 561
Pomógł: 6315
Dołączył: 27.12.2004




Gdy cos moze byc pustym tekstem lub NULLem to nie mozesz porownywac tylko do jednego. Lepiej uzyj wiec empty()
  1. public function isUrlValid(): bool
  2. {
  3. return !empty($this->url)
  4. && substr($this->url, 0, 7) !== 'http://'
  5. && substr($this->url, 0, 8) !== 'https://';
  6. }


Choc tutaj wydaje mi sie i tak ze masz chyba bledy w warunkach logicznych.
&& substr($this->url, 0, 7) !== 'http://'
&& substr($this->url, 0, 8) !== 'https://';

chyba sie wykluczaja nawzajem albo ja zglupialem po swietach (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
ohm
post
Post #3





Grupa: Zarejestrowani
Postów: 623
Pomógł: 144
Dołączył: 22.12.2010

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


Pomijajac juz kwestie walidacji itp, to do adresow masz
https://symfony.com/doc/current/reference/c...raints/Url.html

A jak bys chcial recznie robic, to wydaje mi sie ze regexem byloby lepiej/ladniej.
Go to the top of the page
+Quote Post
eerie
post
Post #4





Grupa: Zarejestrowani
Postów: 114
Pomógł: 0
Dołączył: 3.08.2017

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


Ten warunek działa dobrze. Wyświetla się błąd, gdy podana jest wartość (adres URL) i nie zaczyna się od http:// i https:// jednocześnie. Ale faktycznie można to zrobić dużo prościej i lepiej.

Dzięki serdeczne za pomoc. (IMG:style_emoticons/default/smile.gif)
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: 20.12.2025 - 18:36