如何在使用Laravel 5.5的jQuery中使用@lang?

时间:2019-03-08 15:13:55

标签: php jquery laravel

我正在尝试创建一个动态输入字段,当值不再与存储在数据库中的值匹配时会发出警告。我想使用Laravel的本地化@lang('messages.error'){{ __('messages.error') }}使此消息可用于我的应用的所选语言。

我的问题很简单,如何在jQuery中使用它?我发现,就目前的经验水平而言,答案很难,所以我想知道这里是否有人知道答案。

部分代码:

<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>

<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>

PS。我到处搜寻,但找不到答案。但是,我可能会问错问题。

先谢谢您! :)

编辑+解决方案

我没有提到邮件位于 en 目录中的另一个文件夹中。失败的原因是因为当我应该做斜线(/)时,我总是用点(。)提及路线。我已经编辑了问题。

猜猜这是菜鸟的错误,谢谢所有回答! 谢谢@Theodoros Alexopoulos的回答

3 个答案:

答案 0 :(得分:2)

<script type="text/javascript">

    var something = @json( __('file.variable') );

</script>

脚本应位于刀片服务器内部

然后根据需要使用变量

答案 1 :(得分:0)

我认为您必须在JS单引号内保留@lang{{ }}调用:

$('#noMatchKvk').html('<span class="help-block"><strong>{{ __("messages.noMatchKvk") }}</strong></span>');

那样,或者您可以将{{ __("messages.noMatchKvk") }}的值设置为变量,然后直接在代码中使用它:

var message = "{{ __('messages.noMatchKvK') }}";

$('#noMatchKvk').html('<span class="help-block"><strong>' + message + '</strong></span>');

第二种方法使其更具可读性。另外,请确保此<script>位于.blade.php文件中(看起来像,但是要注意一点;您不能使用@或{ {1}}(直接放在{{ }}文件中)

答案 2 :(得分:0)

不在.js文件中使用此脚本标签内的变量,则可以在脚本标签内或.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('');
    }
});