Как перевести коллекции в 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 может быть?

Но есть много пакетов для этой проблемы уже.

Другие вопросы по тегам