Przemysław Godlewski

Przemysław Godlewski Own company/PHP
programmer/Web
Developer

Temat: Walidacja kolekcji w Symfony

Witajcie

Cy wiecie w jaki sposób podcas walidacji kolekcji dodać do wiadomości błędów której pozycji/indeksu dany komunikat błędu dotyczy?

Przykładowo, mamy w jakiejś głównej klasie Firma walidację kolekcji pracowników, czyli firma może zwierać listę wielu pracowników. Poniższy pseudokod jest bardzo uproszczony:


public class Company {
public static function loadValidatorMetadata(ClassMetadata $metadata)
{
$metadata->addPropertyConstraint('employees, new Valid());
}
}


a w klasie Employee mamy:


public static function loadValidatorMetadata(ClassMetadata $metadata)
{
$metadata->addPropertyConstraint('name', new Assert\NotBlank(array(
'message' => 'Wpisz imię i nazwisko pracownika!',
)));
}


Teraz jeżeli dodam do firmy kolekcję składającą się z 2 pracowników i nie wypełnię ich imion, to widzę dwa razy te same treści błędów:
Wpisz imię i nazwisko pracownika!
Wpisz imię i nazwisko pracownika!

a chciałbym aby do treści błędu dodany został "indeks/nr elementu" elementu z kolekcji, czyli np.:

Wpisz imię i nazwisko pracownika 1!
Wpisz imię i nazwisko pracownika 2!

Czy ktoś wie jak w metodzie loadValidatorMetadata po stronie kolekcji dostać się do indeksu elementu w kolekcji ?

Z góry dziękuję za pomoc.

konto usunięte

Temat: Walidacja kolekcji w Symfony

Hej,
masz dostępną walidację encji.
https://symfony.com/doc/current/validation.html

Możesz nałożyć na co chcesz, jakie chcesz walidatory.

Wystarczy stworzyć własny:
http://symfony.com/doc/current/validation/custom_const...

I podpiąć pod encję. Co tam się znajdzie to już Twoje "widzi mi się".
Przemysław Godlewski

Przemysław Godlewski Own company/PHP
programmer/Web
Developer

Temat: Walidacja kolekcji w Symfony

Metoda validate we własnym walidatorze przyjmuje %string% czyli episaną wartość pola,
A ja bym chciał wkleić do error Message numer pozycji /indeksu na liście kolekcji
Krzysztof N.

Krzysztof N. CEO. Aplikacje
internetowe i
mobilne. Symfony,
Zend.

Temat: Walidacja kolekcji w Symfony

Przemysław G.:
Cy wiecie w jaki sposób podcas walidacji kolekcji dodać do wiadomości błędów której pozycji/indeksu dany komunikat błędu dotyczy?

Przykładowo, mamy w jakiejś głównej klasie Firma walidację kolekcji pracowników, czyli firma może zwierać listę wielu pracowników. Poniższy pseudokod jest bardzo uproszczony:


public class Company {
public static function loadValidatorMetadata(ClassMetadata $metadata)
{
$metadata->addPropertyConstraint('employees, new Valid());
}
}


a w klasie Employee mamy:


public static function loadValidatorMetadata(ClassMetadata $metadata)
{
$metadata->addPropertyConstraint('name', new Assert\NotBlank(array(
'message' => 'Wpisz imię i nazwisko pracownika!',
)));
}


Teraz jeżeli dodam do firmy kolekcję składającą się z 2 pracowników i nie wypełnię ich imion, to widzę dwa razy te same treści błędów:
Wpisz imię i nazwisko pracownika!
Wpisz imię i nazwisko pracownika!

a chciałbym aby do treści błędu dodany został "indeks/nr elementu" elementu z kolekcji, czyli np.:

Wpisz imię i nazwisko pracownika 1!
Wpisz imię i nazwisko pracownika 2!

Czy ktoś wie jak w metodzie loadValidatorMetadata po stronie kolekcji dostać się do indeksu elementu w kolekcji ?
Napisz własny walidator dla klasy / encji Firma. Dodaj go to właściwości z pracownikami i jesteś w domu.

konto usunięte

Temat: Walidacja kolekcji w Symfony

Przemysław G.:
Metoda validate we własnym walidatorze przyjmuje %string% czyli episaną wartość pola,
A ja bym chciał wkleić do error Message numer pozycji /indeksu na liście kolekcji

W ekstremalnych przypadkach możesz użyć callback
https://symfony.com/doc/current/reference/constraints/C...

Ewentualnie sprawdź czy relacja jest OK czy nie a sam message że X, Y i Z są złe sprawdź manualnie.Ten post został edytowany przez Autora dnia 09.01.17 o godzinie 11:11

Następna dyskusja:

Wspólna nauka Symfony




Wyślij zaproszenie do