Laravel 背包假字段和翻译

Laravel Backpack Fake fields and translations

我有一个带有确定数量条目的 CRUD 实体。有一些共同的字段(title, description),但有些条目有一些独有的字段,保存在extras.

我的问题是,有些字段可能是可翻译的,有些则不是。 现在让翻译在假字段中工作的唯一方法是让所有额外内容都可以翻译。

class Module extends Model
{
    use CrudTrait;
    use HasTranslations;

    ...
    protected $fillable = ['title', 'description', 'extras'];
    public $translatable = ['title', 'extras'];

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

我在 @lloy0076

的帮助下找到了解决方案
  1. 向实体 table 添加一列,命名为 extras_translatable,紧跟在 'extras' 之后。

  2. 在实体模型上,将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'];
    
  3. 然后将需要的字段存储在extras_translatable中:

    $this->crud->addField([
        'fake' => true,
        'store_in' => 'extras_translatable',
        ...
    ]);