BelongsTo在Laravel Nova中的翻译

问题描述 投票:1回答:1

我在Nova中用于翻译字段

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

但是我不理解使BelongsTo字段的标题可翻译的手册

标题属性当在资源创建/更新屏幕上显示BelongsTo字段时,下拉选择菜单或搜索菜单将显示资源的“标题”。例如,用户资源可以使用name属性作为其标题。然后,当资源显示在BelongsTo选择菜单中时,将显示该属性:

Well ...在我的代码上,此操作失败,因为翻译以模型名称而不是关系Ship的标签产生。

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)

Nova \ User上的代码

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');
}

[显示用户资源没有问题。标签翻译完成。

但是如果转到资源邮箱,则字段属于不显示翻译

laravel laravel-nova
1个回答
1
投票

之所以这样,是因为如果您没有在make方法上指定第三个参数(资源),Nova会认为您的资源的调用方式与Label相同(例如: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(),
© www.soinside.com 2019 - 2024. All rights reserved.