2017-06-07 2 views
2

Je viens de commencer à utiliser le fournisseur de services de formulaire collectif Laravel/FormBuilder. J'utilise ce composant personnalisé pour rendre un champ de texte avec étiquette. Le problème est que j'essaie de traduire son label avec la fonction __() mais la variable $ name est transformée de first_name en prénom à un stade très avancé.Localisation de l'étiquette Larmbault Collective Formbuilder

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

Je ne peux pas simplement faire ceci:

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

Encore une fois, parce qu'il obtient prenom et transforme plus tard en premier Nom. Mon fichier nl.json contient une traduction pour le prénom, pas le prénom.

Si j'ajoute la fonction _() translate à la dernière règle de la méthode d'étiquette dans FormBuilder, alors elle résout mon problème. Mais bien sûr, je ne veux pas modifier le code du fournisseur!

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

Donc. Comment résoudre ce problème? Dois-je, d'une manière ou d'une autre, besoin de créer une méthode FormBuilder-> label() personnalisée?

Répondre

2

Utilisation trans() aide:

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

Thats it. Je vous remercie. Pouvez-vous spécifier quand utiliser __() et quand utiliser trans()? – Floris

-1

utilisant le nom de champ avec trans() peut créer des erreurs lorsque la langue a changé.

vous devez utiliser somthing comme ce

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