come fare un ingresso campo data maggiore o uguale a un altro campo data di validazione in laravel

Ciao iam lo sviluppo di un’applicazione che utilizza laravel c’è qualche modo per fare un ingresso campo data maggiore o uguale a un altro campo data di validazione.

So che posso raggiungere questo obiettivo attraverso jquery e ho già avuto quel lavoro, ma voglio sapere se questo è realizzabile attraverso laravel convalida dal laravel ha avuto qualche predefiniti di convalida.

Per Esempio

protected $validationRules = array
    (   
      'a' => 'date',
      'b' => 'date|(some validation so that the b value is greater than or equal to that of 'a')'
    );

MODIFICA

Se c’è un altro tipo di approccio per risolvere il problema con laravel concetto prego di dirmi

Ho provato

Validator::extend('val_date', function ($attribute,$value,$parameters) {
    return preg_match("between [start date] and DateAdd("d", 1, [end date])",$value);
});

Grazie in anticipo

InformationsquelleAutor megamage | 2014-11-19



4 Replies
  1. 22

    Ho avuto lo stesso problema. before e after non funziona quando le date potrebbero essere gli stessi. Ecco la mia breve soluzione:

    NOTA: Laravel 5.3.25 e poi hanno costruito nuove regole: before_or_equal e after_or_equal


    //5.1 or newer
    Validator::extend('before_or_equal', function($attribute, $value, $parameters, $validator) {
        return strtotime($validator->getData()[$parameters[0]]) >= strtotime($value);
    });
    
    //5.0 & 4.2
    Validator::extend('before_or_equal', function($attribute, $value, $parameters) {
        return strtotime(Input::get($parameters[0])) >= strtotime($value);
    });

    $rules = array(
        'start'=>'required|date|before_or_equal:stop',
        'stop'=>'required|date',
    );

    • Questo dovrebbe essere contrassegnato come risposta
    • Nota: questo non funziona per Laravel 5.2 Vedere la mia risposta.
    • Dove si fa a mettere il primo blocco di codice? Nel controller?
    • Si può mettere il primo blocco di codice in un Service Provider
    • Dove andare in Laravel 4.2?
  2. 8

    Emil Aspman la risposta è corretta, ma non funziona per Laravel 5.2. questa soluzione funziona per Laravel 5.2:

     Validator::extend('before_equal', function($attribute, $value, $parameters, $validator) {
         return strtotime($validator->getData()[$parameters[0]]) >= strtotime($value);
     });
  3. 0

    La soluzione corretta sarebbe se è stato esteso il Validatore con la vostra regola. Un semplice esempio dal docs:

    Validator::extend('foo', function($attribute, $value, $parameters)
    {
        return $value == 'foo';
    });

    Leggi di più qui

    • ho letto la documentazione ma iam non so come scrivere l’espressione per soddisfare la mia condizione ho aggiornato la mia domanda con che cosa ho provato, si prega di dare un’occhiata.
  4. 0

    Sì, è possibile utilizzare after:date o before:date come questo:

    protected $rules = array(
        'date' => 'after:'.$yourDate
    );

    o, in alternativa,

    protected $rules = array(
        'date' => 'before:'.$yourDate
    );

    Farà esattamente quello che hai descritto. Anche controllare il la documentazione ufficiale di.
    È inoltre possibile specificare le regole della propria utilizzando personalizzate le regole di convalida.

    • grazie per la risposta spero che dopo:data di consentire date solo dopo la data specificata ho bisogno di regola di convalida per soddisfare sia dopo e la stessa regola, in modo che la mia data campo di consentire sia la stessa e dopo la data, ma non prima della data prevista. Ho anche cercato di ‘data’ => ‘dopo:’.$yourDate, ma genera il seguente errore:- [syntax error, unexpected ‘.’, expecting ‘)’]
    • after e before non consentono di uguaglianza quando i tempi sono uguali.

Lascia un commento