J'utilise requis si dans la validation Laravel, mais cela ne fonctionne pas. quelle est mon erreur?
public function rules() { if (!empty($this->game_id)) { $game = Game::find($this->game_id); $game_type = $game->type; } else { $game_type = 'sport'; } return [ 'game_id' => 'required', 'platform_id' => 'required_if:' . $game_type . ',==,electronic', ] }
3 Réponses :
Vous n'avez pas besoin de l'expression entière, le format correct est le suivant:
return [ 'game_id' => 'required', 'platform_id' => 'required_if:columnName:value', ];
Merci pour votre réponse. Le nom de la colonne provient d'une autre table. comment puis-je l'appeler dans cette colonne Nom?
Vous devrez peut-être écrire votre propre règle de validation pour cela.
Essayez le code ci-dessous
public function rules() { if (!empty($this->game_id)) { $game = Game::find($this->game_id); $game_type = $game->type; } else { $game_type = 'sport'; } return [ 'game_id' => 'required', 'platform_id' => 'required_if: . $game_type . ,==,electronic', ] }
La syntaxe de required_if
est 'field_name' => 'required_if: columnName: value'
. Ce que vous faites est d'encapsuler le columnName
dans ''
guillemets simples!
Merci pour votre réponse. Le nom de la colonne provient d'une autre table. comment puis-je l'appeler dans cette colonne Nom?
Que voulez-vous faire exactement?
L'utilisateur crée un tournoi. Quand il / elle sélectionnera un game_id
, je vérifierai son type
comme game_type
à partir de la table de jeu. Le platform_id
dans la table de tournoi est requis si le game_type
de ce game_id
est égal à electronic
.
@ShokouhDareshiri avez-vous essayé mon code? J'ai ce que vous essayez de faire, mais ce code fonctionnera, essayez et faites le moi savoir.
Je l'ai résolu dans mes propres règles comme ci-dessous:
if (!empty($this->game_id)) { $game = Game::find($this->game_id); $game_type = $game->type; if($game_type == 'electronic'){ $required = 'required'; } else{ $required = ' '; } } return [ 'game_id' => 'required', 'platform_id' => $required, ]
Bon à savoir :)
Veuillez vérifier ce stackoverflow.com/questions/37777265/… < / a>
votre nom de champ
game_type
semble être dynamique, assurez-vous que c'est un nom d'entrée valideoui, sa valeur est sportive ou électronique. Je voudrais l'exiger lorsque
game_type
est égal àelectronic
.