Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ Frameworki _ [Laravel] Request (Validacja) pole z reqex

Napisany przez: KotWButach 17.06.2019, 09:44:07

Witam,
zawsze sprawiało mi to problem, nie umiem uruchomić walidacji zawierającej wyrażenie regularne, czy ktoś mógłbym napisać mi jak to powinno być i dlaczego?

wyrażenie regularne: ^\d{4}\-(0[1-9]|1[012])\-(0[1-9]|[12][0-9]|3[01])$
prawidłowe dane YYYY-MM-DD np 2019-06-17

Wyrażenie jest prawidłowe, problem stanowi uruchomienie go wewnątrz walidacji od Laravela.

Kod:

  1.  
  2. <?php
  3.  
  4. namespace App\Http\Requests;
  5.  
  6. use Illuminate\Foundation\Http\FormRequest;
  7.  
  8. class FiltersRequest extends FormRequest
  9. {
  10. /**
  11.   * Determine if the user is authorized to make this request.
  12.   *
  13.   * @return bool
  14.   */
  15. public function authorize()
  16. {
  17. return true;
  18. }
  19.  
  20. /**
  21.   * Get the validation rules that apply to the request.
  22.   *
  23.   * @return array
  24.   */
  25. public function rules()
  26. {
  27. return [
  28.  
  29. 'date' => 'required|regex:/\d{4}\-(0[1-9]|1[012])\-(0[1-9]|[12][0-9]|3[01])/', // CZESC KTORA NAS INTERESUJE
  30.  
  31. ];
  32. }
  33. }
  34.  
  35.  

Napisany przez: viking 17.06.2019, 09:46:29

Ale przecież masz validator daty https://laravel.com/docs/5.8/validation#rule-date

Napisany przez: Pyton_000 17.06.2019, 10:03:40

Bardziej się nada ten: https://laravel.com/docs/5.8/validation#rule-date-format

Napisany przez: KotWButach 17.06.2019, 10:05:11

Kompletnie zapomniałem o "date_format"
dzięki.

A co do regex czy ktoś wie dlaczego to nie działa, bo chciałbym jednak się nauczyć stosować regex w laravel

Napisany przez: Pyton_000 17.06.2019, 10:25:50

Nie działa bo:

Cytat
Note: When using the regex / not_regex patterns, it may be necessary to specify rules in an array instead of using pipe delimiters, especially if the regular expression contains a pipe character.


Powinno być coś takiego:

Kod
['required', 'regex:/\d{4}\-(0[1-9]|1[012])\-(0[1-9]|[12][0-9]|3[01])/']

Napisany przez: markonix 17.06.2019, 19:48:57

Ja ogólnie polecam używać tablic zamiast stringów, jak dla mnie to chyba jakieś przyzwyczajenia z CodeIgniter albo podobnych FW.
Do tablic wrzucisz obiekt Rule, łatwiej manipulować np. dodać rule w zależności od jakichś warunków itp.

Napisany przez: phamyen 25.06.2019, 04:59:03

The article you shared here is very awesome. I really like and appreciate your work. I have read your article deeply, the points that you mentioned in this article are useful
http://www.girlsgo2games.com/

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)