我刚开始使用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()方法吗?
答案 0 :(得分:3)
使用trans()
帮助:
{{ Form::label(trans($name), null, ['class' => 'group__label']) }}
答案 1 :(得分:-2)
使用trans()
字段名称可能会在语言发生变化时产生错误。
你应该使用像这样的东西
{{ Form::label('name', trans(''), ['class' => '']) }}