2017-06-23 2 views
1

私は決定された量のエントリを持つCRUDエンティティを持っています。 (タイトル、説明)の共通フィールドがいくつかありますが、一部のエントリにはいくつかの排他的なフィールドがあり、別のフィールドに保存されています。Laravel Backpack偽のフィールドと翻訳

私の問題は、一部のフィールドが翻訳可能である可能性があり、そうでない可能性があります。 現在、偽のフィールドで翻訳を行う唯一の方法は、すべての翻訳を翻訳可能にすることです。

class Module extends Model 
{ 
    use CrudTrait; 
    use HasTranslations; 

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

これは、多くの余分なフィールドが翻訳できないイメージであるため、これが問題になります。

答えて

2

私は@lloy0076

  1. から助けを借りて解決策を見つけ、右'extras'後、extras_translatableという名前の、エンティティテーブルに列を追加します。

    エンティティモデルについて
  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', 
        ... 
    ]); 
    
+1

非常に良い解決策! – tabacitu