2016-05-11 15 views
1

私はSymfony 2.7から2.8への移行を行っています。Symfony property_pathが2.8へのアップグレード後に正しく動作しない

私のモデルが配列であるとセッターを持つフィールド$テキストを持っている:私は保存しようとしている

public function setText(array $text) 
{ 
    $this->$text = $text; 

    return $this; 
} 

テキストは、異なる言語(にformType部分怒鳴る)のための2つのフィールドがあります。

$builder->add('text_en', 'text', array(
    'required' => false, 
    'property_path' => 'text[en]' 
)); 
$builder->add('text_pl', 'text', array(
    'required' => false, 
    'property_path' => 'text[pl]' 
)); 

symfony 2.7上ではすべてが問題ありません(setterは両方のフィールドの値で一度起動しています)が、2.8へのアップグレード後、setterは各フィールドに対して2回起動します。結果は$ textは両方のフィールドではなく、 (2回目は 'en'言語のフィールド値を上書きします)。助言がありますか?

あなたは(あなたが戻って古いsymfonyのバージョン:)に戻す場合には)このようにそれを行うことができます

答えて

0

public function setText(array $text) 
{ 
    foreach ($text as $key => $value) { 
    $this->$text[$key] = $value; 
    } 

    return $this; 
} 
+0

私はこのソリューションを避けるためにしようとしているが、そこになります場合、私はそれを使用しますオプションが残っていません –

+0

なぜですか?あなたのコードはそれを使用するよう強制します。通常は、再利用可能でないフォームを使用するのではなく、翻訳可能なエンティティ/ドキュメントを実装する必要があります。追加の言語を追加する場合は、すべてのコードを変更する必要があるとします。 – malcolm

+0

上記のコードは簡略化されています。私は実際にループ内にフィールドを追加しています。 –

関連する問題