Laravel Backpack 假字段和翻译

Ant*_*ida 1 php translation crud laravel laravel-backpack

我有一个带有确定数量条目的 CRUD 实体。有一些公共字段(标题、描述),但有些条目有一些专有字段,这些字段保存在 extras 中。

我的问题是,某些字段可能是可翻译的,而其他字段则可能不可翻译。目前,让翻译在虚假领域发挥作用的唯一方法是让所有额外内容都可翻译。

class Module extends Model
{
    use CrudTrait;
    use HasTranslations;

    ...
    protected $fillable = ['title', 'description', 'extras'];
    public $translatable = ['title', 'extras'];
Run Code Online (Sandbox Code Playgroud)

这给我带来了一个问题,因为许多额外的字段是不可翻译的图像。

Ant*_*ida 5

我在@lloy0076的帮助下找到了解决方案

  1. 在实体表中添加一列,名为extras_translatable,位于 之后'extras'

  2. 在实体 Model 上,添加extras_translatable$fillable变量,并强制$fakeColumns转换为:$translatable'extras_translatable'array

    protected $fillable = ['title', 'description', 'extras', 'extras_translatable'];
    protected $fakeColumns = ['extras', 'extras_translatable']; 
    protected $translatable = ['title', 'extras_translatable'];
    protected $casts = ['extras_translatable' => 'array'];
    
    Run Code Online (Sandbox Code Playgroud)
  3. 然后只需将所需的字段存储在extras_translatable

    $this->crud->addField([
        'fake' => true,
        'store_in' => 'extras_translatable',
        ...
    ]);
    
    Run Code Online (Sandbox Code Playgroud)