【问题标题】:Laravel Collective Formbuilder label localizationLaravel Collective Formbuilder 标签本地化
【发布时间】:2017-11-08 15:39:31
【问题描述】:

我刚开始使用 Laravel 集体表单服务提供者/FormBuilder。

我使用这个自定义组件来呈现带有标签的文本字段。问题是我试图用 __() 函数翻译它的标签,但是 $name 变量在很晚的阶段才从 first_name 转换为 First Name。

<div class="control-group">
    {{ Form::label($name, null, ['class' => 'group__label']) }}
    {{ Form::text($name, $value, array_merge(['class' => 'control-
    group__control'], $attributes)) }}
</div>

我不能简单地这样做:

{{ Form::label(__($name), null, ['class' => 'group__label']) }}

再次,因为它获取了 first_name,然后将其转换为 First Name。我的 nl.json 文件包含 First Name 的翻译,而不是 first_name。

如果我将 _() 翻译函数添加到 FormBuilder 中 label 方法的最后一条规则是,那么它解决了我的问题。但是,我当然不想修改供应商代码!

 return $this->toHtmlString('<label for="' . $name . '"' . $options . '>' . __($value) . '</label>');

所以。如何解决这个问题?我是否需要以某种方式创建自定义 FormBuilder->label() 方法?

【问题讨论】:

    标签: php forms laravel laravelcollective


    【解决方案1】:

    使用trans() 助手:

    {{ Form::label(trans($name), null, ['class' => 'group__label']) }}
    

    【讨论】:

    • 就是这样。谢谢你。你能指定什么时候使用__()和什么时候使用trans()吗?
    【解决方案2】:

    使用带有trans() 的字段名称可能会在语言更改时产生错误。

    你应该使用这样的东西

    {{ Form::label('name', trans(''), ['class' => '']) }}
    

    【讨论】:

      猜你喜欢
      • 2019-08-19
      • 1970-01-01
      • 1970-01-01
      • 2016-04-10
      • 2011-09-19
      • 1970-01-01
      • 1970-01-01
      • 2020-04-26
      • 2015-08-28
      相关资源
      最近更新 更多