Вызов функции-члена hasTranslation () для null - Laravel - PullRequest
0 голосов
/ 27 декабря 2018

Я использую Laravel Translatables.Но когда я выполняю, я получаю сообщение об ошибке типа Call to a member function hasTranslation() on null.Вот мой код.

<?php 
    if($slider->product->hasTranslation($locale))
    {
       $type = $slider->product->translate($locale)->product_name;
    }
    else{
       $type = $slider->product->translate('en')->product_name;
    } //echo $type; exit;

?>

$slider->product не равен NULL и $locale имеет значение 'en' Этот код работает нормально вчера, единственное изменение, которое я сделал, с панели администратора, которую я только что удалилтребуемая проверка из поля добавления продукта.

Ответы [ 2 ]

0 голосов
/ 27 декабря 2018

Я исправил эту проблему с другим условием if.Модифицированный код

<?php if(!empty($slider->product)) {

        if($slider->product->hasTranslation($locale))
        {
          $type = $slider->product->translate($locale)->product_name;
        }
        else{
          $type = $slider->product->translate('en')->product_name;
        }
    }
?>
0 голосов
/ 27 декабря 2018

Проверьте настройку вашего отношения $slider->product не равно нулю

и модель имеет use Translatable признак

есть вспомогательный метод под названием необязательный ()

optional($slider->product)->hasTranslation($locale)

этот метод позволит избежать исключения.

НЕ РЕКОМЕНДУЕТСЯ ИСПОЛЬЗОВАТЬ ЭТО (опционально ()) ЕСЛИ $ slider-> продукт ДОЛЖЕН ИМЕТЬ ЗНАЧЕНИЕ

просто ярлык для чистого кода

if(optional($slider->product)->hasTranslation($locale))
   $type = optional($slider->product)->translate($locale)->product_name;
else
   $type = optional($slider->product)->translate('en')->product_name;
...