web-dev-qa-db-fra.com

Laravel blade "ancienne entrée ou variable par défaut"?

Je veux montrer l'ancienne entrée en valeur d'entrée. S'il n'y a pas d'ancienne entrée, affichez l'autre variable:

value="{{ old('salary_' . $employee->id) or 'Default' }}"

Mais quand il n'y a pas d'ancienne entrée, cela me donne 1 au lieu de la valeur par défaut!

Je pense que le problème a quelque chose à voir avec la concaténation, mais je ne sais pas comment le résoudre!?

26
Jeton Thaçi

or est un opérateur de comparaison en PHP, donc votre code est évalué à true, ou 1. Ce que vous voulez, c'est une instruction ternaire if.

Comme mentionné, or peut être utilisé dans blade comme raccourci pour une instruction if ternaire.

Mais vous pouvez (et devriez) simplement passer la valeur par défaut comme deuxième argument à la fonction, comme ceci:

value="{{ old('salary_' . $employee->id, 'Default') }}"
53
Adunahay

Comme décrit dans le document Laravel: "Si vous affichez une ancienne entrée dans un modèle Blade, il est plus pratique d'utiliser l'ancien assistant:". Donc, si vous avez besoin d'ajouter/modifier un formulaire de données ( lorsque vous devez utiliser le formulaire d'édition pour ajouter et modifier en mode édition, vous devez utiliser les données chargées du modèle (base de données)) pour afficher les valeurs du modèle (via le contrôleur), vous pouvez utiliser les éléments suivants:

name="some_value" value="{{ $some_value or old('some_value', $the_value) }}"

où est le nom de la variable "some_value_from_model" dans le tableau de vues. Dans ce cas, il devrait être dans un premier temps $ some_value sera utilisé pour définir la "valeur" et, si non, il essaiera d'utiliser old (valeur de la demande du nom "some_value") et s'il n'est pas ancien alors '' devrait être utilisé.

Merci WoodyDRN pour son commentaire.

1
Alex