J'ai défini un tableau
$this->allslots=array('10:00:00', '10:10:00', '10:20:00', '10:30:00', '10:40:00', '10:50:00', '11:00:00', '11:10:00', '11:20:00', '11:30:00', '11:40:00', '11:50:00', '12:00:00', '12:10:00', '12:20:00', '12:30:00', '12:40:00', '12:50:00', '13:00:00', '13:10:00', '13:20:00', '13:30:00', '13:40:00', '13:50:00', '14:00:00', '14:10:00', '14:20:00', '14:30:00', '14:40:00', '14:50:00', '15:00:00', '15:10:00', '15:20:00', '15:30:00', '15:40:00', '15:50:00', '16:00:00', '16:10:00', '16:20:00', '16:30:00', '16:40:00', '16:50:00');
Maintenant, je veux valider avant d’enregistrer les données dans la base de données, si une entrée donnée correspond à une des valeurs du tableau ci-dessus. Pour cela je fais
$this->validate($request, [
'field' => 'required|in_array:$this->allslots',
]);
Mais cela renvoie une erreur de validation pour chaque entrée. Alors, comment puis-je faire cela?
Essaye ça:
'field' => 'required|in:' . implode(',', $this->allslots),
Est-ce que cela vous donne le résultat attendu?
C'est un peu plus sémantique que la réponse acceptée:
use Illuminate\Validation\Rule;
$this->allslots=array('10:00:00', '10:10:00', '10:20:00', '10:30:00', '10:40:00', '10:50:00', '11:00:00', '11:10:00', '11:20:00', '11:30:00', '11:40:00', '11:50:00', '12:00:00', '12:10:00', '12:20:00', '12:30:00', '12:40:00', '12:50:00', '13:00:00', '13:10:00', '13:20:00', '13:30:00', '13:40:00', '13:50:00', '14:00:00', '14:10:00', '14:20:00', '14:30:00', '14:40:00', '14:50:00', '15:00:00', '15:10:00', '15:20:00', '15:30:00', '15:40:00', '15:50:00', '16:00:00', '16:10:00', '16:20:00', '16:30:00', '16:40:00', '16:50:00');
$request->validate([
'field' => [
'required',
Rule::in($this->allslots)
]
]);
J'ai trouvé une meilleure solution. Validate in_array s'attend à ce que le tableau soit l'un des paramètres de la requête. La réponse acceptée ne fonctionnera pas si vous avez des virgules dans le tableau. Pour utiliser le in_array sans avoir à créer une nouvelle règle, vous pouvez simplement faire:
$this->allslots=array('10:00:00', '10:10:00', '10:20:00', '10:30:00', '10:40:00', '10:50:00', '11:00:00', '11:10:00', '11:20:00', '11:30:00', '11:40:00', '11:50:00', '12:00:00', '12:10:00', '12:20:00', '12:30:00', '12:40:00', '12:50:00', '13:00:00', '13:10:00', '13:20:00', '13:30:00', '13:40:00', '13:50:00', '14:00:00', '14:10:00', '14:20:00', '14:30:00', '14:40:00', '14:50:00', '15:00:00', '15:10:00', '15:20:00', '15:30:00', '15:40:00', '15:50:00', '16:00:00', '16:10:00', '16:20:00', '16:30:00', '16:40:00', '16:50:00');
$request['allslots'] = $this->allslots;
validate($request, [
'field' => 'required|in_array:allslots.*',
]);
Assurez-vous d'inclure le. * À la fin