Laravel Collective Formbuilder标签本地化

时间:2017-06-07 10:26:09

标签: php forms laravel laravelcollective

我刚开始使用Laravel Collective Form Service Provider / 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-&gt; label()方法吗?

2 个答案:

答案 0 :(得分:3)

使用trans()帮助:

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

答案 1 :(得分:-2)

使用trans()字段名称可能会在语言发生变化时产生错误。

你应该使用像这样的东西

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