Проблема в том, что я хочу название на 3 языках (английский, итальянский, немецкий). Пользователь может добавить 3 названия в форму для каждого языка, из которых только итальянский required
. После этого заголовки сохраняются в БД с помощью spatie / laravel-translatable
:
{"it":"Titolo in italiano.","en":"English title."}
Идея состоит в том, что пользователь может редактировать эти заголовки, но есть проблема. В форме при попытке получить заголовки для английского, итальянского, немецкого языков, когда один из заголовков для этих языков отсутствует, и я пытаюсь показать его, используя:
{{ $item->getTranslation('title_lang', 'de') }}
Он извлекает заголовок по умолчанию в соответствии с локалью по умолчанию, в данном случае это 'it'
. Так что, если название Germa отсутствует, отображается итальянское.
Я хотел показать ввод, который будет содержать название на немецком языке, иначе он будет пустым, если название на немецком языке отсутствует.
Я не знаю, как я могу проверить blade
с помощью оператора @if
или какой-либо другой логики.
Я отчаянно пробовал это, но безуспешно (нет смысла, но я попробую):
@if (isset($product->getTranslation('description_locale', 'de')))
{{ $product->getTranslation('description_locale', 'de') }}
@endif
Я просмотрел документы, но не нашел ничего, что могло бы мне помочь.
Кто-нибудь знает, как этого добиться?
Спасибо!
Бро ты прав! Большое спасибо! Меня заблокировали и в голову ничего не приходит. Вы можете написать это как ответ, и я могу принять это!
к вашему сведению: @if (isset({{ $product->getTranslation('description_locale', 'de') }}))
не должен содержать {{
и }}
, так как вы уже используете Blade
@brombeer да, это так глупо, я просто запутался и сделал это, я знаю, что @if
не должен конатин {{}}
, но я просто был сбит с толку. Спасибо, в любом случае. Я тоже пробовал это без {{}}
и не работал. Я редактирую вопрос, но я уже получил ответ.
Это может быть из-за isset()
, @if ($product->getTranslation('description_locale', 'de'))
должно работать, хотя не проверялось
Можете ли вы попробовать параметр $useFallbackLocale=false
, чтобы не получить строку локали по умолчанию.
Вы можете проверить использование метода из исходного кода.
Как: $product->getTranslation('description_locale', 'de', false)
вы можете попробовать параметр
$useFallbackLocale=false
, чтобы не получить строку локали по умолчанию. github.com/spatie/laravel-translatable/blob/master/src/… Как:$product->getTranslation('description_locale', 'de', false)