Warunek w walidacji Laravel

0

Witajcie,
Mam taki kod:

return [
   'speed_number' => ['required', 'string', 'min:3', 'max:255'],
   'order_number' => ['required', 'string', 'min:3', 'max:255'],
   'address_from' => ['required', 'string', 'min:3', 'max:255'],
   'address_to' => ['required', 'string', 'min:3', 'max:255'],
   'data_start' => ['required', 'string', 'min:3', 'max:60'],
   'data_finish' => ['required', 'string', 'min:3', 'max:60'],
   'transport_type'  => 'required',
   'carrier_name' => ['required_if:transport_type,==,2', 'min:3', 'max:255'],
   'carrier_nip' => ['required_if:transport_type,==,2', 'min:3', 'max:255'],
   'carrier_street' => ['required_if:transport_type,==,2', 'min:3', 'max:255'],
   'carrier_email' => ['required_if:transport_type,==,2',  'min:3', 'max:255'],
   'carrier_phone' => ['required_if:transport_type,==,2',  'min:3', 'max:255'],
   'carrier_postal_code' => ['required_if:transport_type,==,2',  'min:3', 'max:255'],
   'carrier_city' => ['required_if:transport_type,==,2', 'min:3']
];

Chciałbym żeby w momencie gdy request zawiera transport_type == 2 - walidacje o nazwie carrier_ były aktywne.

W tej chwili zawsze się włączają (np. przy transport_type == 1) :(

Wie ktoś może jak to naprawić?

1

Nigdy nie używałem ani laravela ani php, ale podzielę się umiejętnością używania google https://laravel.com/docs/9.x/validation
Wywal "==," i powinno działać

Polecam: https://google.com

0

Coś mi się wydaje że powinno pomóc usunięcie ==, z warunków po prostu przy "równy" warunek porównania nie jest potrzebny ale pewien nie jestem,.

0

to już próbowałem i nie pomaga :/

return [
            'speed_number' => ['required', 'string', 'min:3', 'max:255'],
            'order_number' => ['required', 'string', 'min:3', 'max:255'],
            'address_from' => ['required', 'string', 'min:3', 'max:255'],
            'address_to' => ['required', 'string', 'min:3', 'max:255'],
            'data_start' => ['required', 'string', 'min:3', 'max:60'],
            'data_finish' => ['required', 'string', 'min:3', 'max:60'],
            'transport_type'  => 'required',
            'carrier_name' => ['required_if:transport_type,2', 'min:3', 'max:255'],
            'carrier_nip' => ['required_if:transport_type,2', 'min:3', 'max:255'],
            'carrier_street' => ['required_if:transport_type,2', 'min:3', 'max:255'],
            'carrier_email' => ['required_if:transport_type,2',  'min:3', 'max:255'],
            'carrier_phone' => ['required_if:transport_type,2',  'min:3', 'max:255'],
            'carrier_postal_code' => ['required_if:transport_type,2',  'min:3', 'max:255'],
            'carrier_city' => ['required_if:transport_type,2', 'min:3']
        ];
2

Ja bym na Twoim miejscu napisał swój validator właśnie pod ten warunek.
Cos ala isSomeSpecialTransportType i potem możesz sobie łączyć warunki właśnie ze swoim walidatorem. Będzie czytelniej bo ktoś potem przyjdzie to od razu będzie wiedział po co to jest bo status 2 może nic nie mówić. w dodatku przy DRY warto by mieć ten typ określony w jednym miejscu a nie 20, przy zmianie po prostu zmienisz go w jednej linijce takiego walidatora.
Z tego co pamiętam to parsowanie tego stringa różniło się między wersjami Laravela. Podaj wersję to można by sprawdzić w kodzie źródłowym jak to jest prasowane dokładnie i jak i czy w ogóle podawanie parametrów takim sposobem ma sens.

1

Pomogło coś takiego:

return [
            'speed_number' => ['required', 'string', 'min:3', 'max:255'],
            'order_number' => ['required', 'string', 'min:3', 'max:255'],
            'address_from' => ['required', 'string', 'min:3', 'max:255'],
            'address_to' => ['required', 'string', 'min:3', 'max:255'],
            'data_start' => ['required', 'string', 'min:3', 'max:60'],
            'data_finish' => ['required', 'string', 'min:3', 'max:60'],
            'transport_type'  => 'required',
            'carrier_name' => ['required_if:transport_type,2','nullable',  'min:3', 'max:255'],
            'carrier_nip' => ['required_if:transport_type,2','nullable',  'min:3', 'max:255'],
            'carrier_street' => ['required_if:transport_type,2','nullable',  'min:3', 'max:255'],
            'carrier_email' => ['required_if:transport_type,2','nullable',   'min:3', 'max:255'],
            'carrier_phone' => ['required_if:transport_type,2', 'nullable',  'min:3', 'max:255'],
            'carrier_postal_code' => ['required_if:transport_type,2',  'nullable', 'min:3', 'max:255'],
            'carrier_city' => ['required_if:transport_type,2', 'nullable',  'min:3']
        ];

1 użytkowników online, w tym zalogowanych: 0, gości: 1