【问题标题】:How do I use @lang within jQuery using Laravel 5.5?如何使用 Laravel 5.5 在 jQuery 中使用 @lang?
【发布时间】:2019-07-30 15:43:26
【问题描述】:

我正在尝试创建一个动态输入字段,当某个值不再与数据库中存储的值匹配时会发出警告。我想使用 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>

附言。我四处寻找,但找不到答案。不过,我可能问错了问题。

提前感谢您! :)

编辑 + 解决方案

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

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

【问题讨论】:

标签: php jquery laravel


【解决方案1】:
<script type="text/javascript">

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

</script>

脚本应该在你的刀片中

然后根据需要使用变量

【讨论】:

  • var something = @json(__('file.variable')); 可能更安全。带有' 的翻译字符串会破坏上面的代码。
  • 原来如此,没想到,谢谢指出
【解决方案2】:

在 laravel 8 中,你可以使用 @lang 而不需要像这样的任何括号

<script type="text/javascript">

    var message = "@lang('file.variable')";

</script>

【讨论】:

    【解决方案3】:

    在脚本标签中使用这个而不是在 .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('');
        }
    });
    

    【讨论】:

      【解决方案4】:

      我认为您必须在 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>');
      

      第二种方法使它更具可读性。此外,请确保此 &lt;script&gt; 位于 .blade.php 文件中(看起来确实如此,但只是需要注意的一点;您不能直接使用 @{{ }} 之类的刀片指令 @ 987654330@文件)

      【讨论】:

        猜你喜欢
        • 2018-03-31
        • 1970-01-01
        • 2018-03-09
        • 2018-08-12
        • 2018-04-05
        • 2018-08-01
        • 2018-03-12
        • 1970-01-01
        • 2018-04-20
        相关资源
        最近更新 更多