Как перевести коллекции в Laravel 5?
Я использую метод срывать для получения значений. Как я могу перевести эти значения? (эти значения являются опциями для поля ввода выбора)
$relationtypes = Relationtype::pluck('name', 'id');
Мои типы отношений: поставщик, клиент и т. Д.
2 ответа
Я также нашел более удобное решение:
$relationtypes = RelationType::pluck('name', 'id')->map(function ($item, $key) {
return trans('labels.' . $item . '');
});
Передав это на ваш взгляд, вы можете использовать:
{!! Form::select('relationtypes[]', $relationtypes,
isset($relation) ? $relation->relationtypes->pluck('id')->toArray() : 0, ['class' => 'form-control']) !!}
Надеюсь, что это помогает другим людям!
Мы можем создать собственный метод сбора.
Collection::macro('translate', function ($prefix) {
return $this->map(function ($item) use ($prefix) {
return trans($prefix . $item);
});
});
в AppServiceProvider.
И использование:
Model::pluck('code_name', 'id')->translate('system.code.')->implode(',');
Ваш метод контроллера может выглядеть так:
public function index () {
$relationtypes = Relationtype::pluck('name', 'id');
// A better place for this might be a middleware
App::setlocale('your-locale');
return view('relationtypes.index, compact('relationtypes'));
}
По вашему мнению, переберите их:
<select>
@foreach (types as type)
<option value="{{ type.id }}">{{ trans(type.name) }}</option>
@endforeach
</select>
Если вы хотите перевести значения с помощью trans
Функция, которую вы должны иметь заранее значения в resources\lang\<locale>\<file>.php
Например, давайте изобразим значения из вашей базы данных:
| id | name |
|----|------------|
| 1 | slug-one |
| 2 | slug-two |
| 3 | slug-three |
Затем в resources\lang\nl\slugs.php
return [
'slug-one' => 'whatever translation for slug-on in nl',
// ...
];
Этот подход хорош для нединамических значений, если ваши значения являются динамическими, перевод, вероятно, должен быть в каком-то поле db, например: name_nl
, name_en
может быть?
Но есть много пакетов для этой проблемы уже.