Перевод слова BelongsTo в Laravel Nova

Я использую для переводов поля в Nova

Text::make(__('Name User'), 'name')

Но я не понимаю, как сделать перевод заголовка полей BelongsTo переводимым.

Атрибуты заголовка Когда поле BelongsTo отображается на экране создания / обновления ресурса, в раскрывающемся меню выбора или меню поиска будет отображаться «заголовок» ресурса. Например, пользовательский ресурс может использовать атрибут name в качестве заголовка. Затем, когда ресурс отображается в меню выбора BelongsTo, этот атрибут будет отображаться:

Что ж ... В моем коде это не удается, потому что перевод производится на имя модели, а не на метку отношения Корабль.

BelongsTo::make(__('User'), 'users')->withMeta([
  'belongsToId' =>  $this->user_id ?? auth()->user()->id
])->hideFromDetail()
local.ERROR: Class 'App\Nova\Usuario' not found {"userId":1,"exception":"[object] (Symfony\\Component\\Debug\\Exception\\FatalThrowableError(code: 0): Class 'App\\Nova\\Usuario' not found at /home/abkrim/Sites/albaridnova/vendor/laravel/nova/src/Fields/BelongsTo.php:118)

Код на Нова \ Пользователь

public static $model = 'App\\User';

public static $title = 'email';

public static $search = ['id', 'name', 'email'];

public static function availableForNavigation(Request $request)
{
    return $request->user()->isAdmin();
}

public static function label()
{
    return __('Users');
}

public static function singularLabel()
{
    return __('User');
}

При показе ресурса пользователя не проблема. Сделаны переводы этикеток.

Но если перейти на ресурс Mailbox, поле BelongsTo не показывать переводы


person abkrim    schedule 12.02.2020    source источник


Ответы (1)


Это происходит потому, что если вы не укажете третий аргумент (ресурс) в методе make, Nova будет думать, что ваш ресурс вызывается так же, как и метка (например: label: User, затем resourceName: User), и попытается найдите этот класс ресурсов.

Очевидно, вы можете переопределить это, передав класс ресурса в качестве третьего аргумента:

// Add the import of your resource if its class
// is not in the same directory as this file
BelongsTo::make(__('User'), 'users', User::class)->withMeta([
  'belongsToId' =>  $this->user_id ?? auth()->user()->id
])->hideFromDetail(),
person mdexp    schedule 15.02.2020
comment
Большое спасибо. Я уже исправил свои проблемы после просмотра документа. Я увидел, что необходимо передать три параметра: метку, таблицу и модель. Спасибо @mdexp - person abkrim; 15.02.2020
comment
Нет проблем, в будущем вы также можете проверить исходный код, который действительно хорошо документирован и красноречив. Иногда поискать источник происходит быстрее, чем искать в документации. В любом случае, если вы так считаете, отметьте мой ответ как правильный или опубликуйте его самостоятельно, чтобы отметить его как правильный, поскольку это может помочь другим людям с той же проблемой в будущем - person mdexp; 15.02.2020