J'essaie de créer un champ de saisie dynamique qui donne un avertissement lorsqu'une valeur ne correspond plus à la valeur stockée dans la base de données. Je souhaite utiliser la localisation de Laravel @lang ('messages.error') ou {{__ ('messages.error')}} pour rendre ce message disponible pour les langues pour mon application.
Ma question est simple, comment l'utilisez-vous dans jQuery? J'ai trouvé la réponse difficile pour mon niveau d'expérience actuel, donc je me demande si quelqu'un ici connaît la réponse.
Code partiel:
<form action="" method="post">
<div class="ibox float-e-margins">
<div class="ibox-title">
<h4>@lang('form.kvk')</h4>
</div>
<div class="ibox-content">
<div class="form-group{{ $errors->has('kvk') ? ' has-error' : '' }}">
<label for="kvk">@lang('form.kvk')<span class="redFont">*</span></label>
<input type="text" class="form-control" name="kvk" id="kvk" value="{{ ( $errors->has('kvk') ? old('kvk') : ( $debtor != NULL ? $debtor->kvk : old('kvk') ) ) }}">
</div>
</div>
{{-- Remains empty if no error --}}
<div id="noMatchKvk"></div>
</div>
</form>
<script>
/* added after answer
var kvk = '{{ __("add/customer/messages.noMatchKvk") }}';
*/
$('#kvk').keyup().on('change', function() {
// If the value is no longer equal to the DB
if ( $('#kvk').val() != '{{ $debtor->kvk }}' ) {
$('#noMatchKvk').html('<span class="help-block"><strong>' + kvk + '</strong></span>');
}
// If the value remains the same
if ( $('#kvk').val() == '{{ $debtor->kvk }}' ) {
$('#noMatchKvk').html('');
}
});
</script>
<meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <title></title>
PS. J'ai cherché partout, mais je n'ai pas trouvé la réponse. Cependant, je pose peut-être la mauvaise question.
Merci d'avance! :)
EDIT + Solution
Je n'ai pas mentionné que les messages se trouvaient dans un autre dossier dans le fr répertoire . La raison pour laquelle cela a échoué était parce que je n'arrêtais pas de mentionner l'itinéraire avec des points (.), Alors que j'aurais dû faire des barres obliques (/). J'ai édité ma question.
Je suppose que c'était une erreur de débutant, merci à tous ceux qui ont répondu! Et merci @Theodoros Alexopoulos pour votre réponse
4 Réponses :
<script type="text/javascript">
var something = @json( __('file.variable') );
</script>
The script should be inside your bladeThen use the variable as you like
Il peut être plus sûr de faire var something = @json (__ ('file.variable')); . Une chaîne de traduction contenant ' cassera le code ci-dessus.
C'est en fait correct, je n'y ai pas pensé, merci de l'avoir signalé
Je pense que vous devez conserver l'appel @lang ou {{}} à l'intérieur des guillemets simples JS:
var message = "{{ __('messages.noMatchKvK') }}";
$('#noMatchKvk').html('<span class="help-block"><strong>' + message + '</strong></span>');
Cela, ou vous pouvez définir la valeur de {{__ ("messages.noMatchKvk")}} sur une variable et l'utiliser directement dans votre code:
$('#noMatchKvk').html('<span class="help-block"><strong>{{ __("messages.noMatchKvk") }}</strong></span>');
Utilisez cette balise dans les scripts PAS dans le fichier .js, vous pouvez alors utiliser la variable à l'intérieur des balises de script ou dans .js
<script>
var v1 = '{{ @lang('file.value') }}';
$('#kvk').keyup().on('change', function() {
// If the value is no longer equal to the DB
if ( $('#kvk').val() != '{{ $debtor->kvk }}' ) {
$('#noMatchKvk').html('<span class="help-block"><strong>' + v1 + '</strong></span>');
}
// If the value remains the same
if ( $('#kvk').val() == '{{ $debtor->kvk }}' ) {
$('#noMatchKvk').html('');
}
});
Dans laravel 8, vous pouvez utiliser @lang sans aucune parenthèse comme celle-ci
<script type="text/javascript">
var message = "@lang('file.variable')";
</script>
Avez-vous rencontré cette page lors de la recherche? pineco.de/using-laravels-localization-js