Il semble que le problème réside dans la façon dont vous essayez de personnaliser les messages d'erreur pour les champs de tableau dans votre classe CreateSchoolingRequest. Vous avez utilisé la clé niveau_id_schooling.*.unique dans la méthode messages(), mais cela ne semble pas fonctionner correctement.
Voici une suggestion pour résoudre ce problème:
-
Modifier les règles de validation pour utiliser la syntaxe de tableau dans
rules():Changez la règle de validation unique pour utiliser la syntaxe de tableau afin de spécifier le champ unique pour chaque élément du tableau. Vous pouvez le faire de la manière suivante:
'niveau_id_schooling.*' => [ 'required', Rule::unique('schoolings', 'niveau_id') ->where('school_year_id', $this->schooling_school_year) ], Cela permettra de gérer correctement la validation unique pour chaque élément du tableau.
-
Modifier le message d'erreur dans
messages():Vous pouvez maintenant personnaliser le message d'erreur pour la validation unique en utilisant la clé correcte:
'niveau_id_schooling.*.unique' => 'Le niveau :value est déjà ajouté', Notez que
:valuesera automatiquement remplacé par la valeur spécifique du champ. -
Mise à jour complète de la classe
CreateSchoolingRequest:Voici comment pourrait ressembler la classe mise à jour:
<?php namespace App\Http\Requests; use Illuminate\Validation\Rule; use Illuminate\Foundation\Http\FormRequest; class CreateSchoolingRequest extends FormRequest { // ... autres méthodes public function rules() { return [ 'schooling_school_year' => 'required', 'niveau_id_schooling' => 'required|array', 'niveau_id_schooling.*' => [ 'required', Rule::unique('schoolings', 'niveau_id') ->where('school_year_id', $this->schooling_school_year) ], 'schooling_amount' => 'required|array', 'schooling_amount.*' => 'required', ]; } public function messages() { return [ 'schooling_school_year.required' => 'L\'année académique est obligatoire', 'niveau_id_schooling.*.required' => 'Vous devez ajouter au moins une ligne de données pour le niveau', 'schooling_amount.*.required' => 'Vous devez ajouter une ligne de montant pour enregistrer', 'niveau_id_schooling.*.unique' => 'Le niveau :value est déjà ajouté', ]; } // ... autres méthodes }
Assurez-vous de mettre à jour votre classe CreateSchoolingRequest en fonction de ces suggestions, puis réessayez d'envoyer le formulaire. Cela devrait résoudre le problème de la conversion de tableau en chaîne.