2017-11-01 13 views
0

私はエンティティを持っています - 'house'私はsymfonyフォームで編集したいです。エンティティのプロパティの1つは、manytoone関係にマップされた別のエンティティ '所有者'です。symfonyフォームのエンティティプロパティのマッピング方法

私はHouseエンティティを作成するときに誰が所有しているのか知っていますが、変更することができますので、フォームにオーナーを渡す必要がありますが、編集できる方法ではありません。

私がSymfonyを使用していない場合、私はそれを 'OwnerID'の隠しフィールドとして渡します。 Symfonyでは、私はそれをentitity型として渡すことができますが、これは選択フィールドであり、可視であり、所有者を変更することができます。

symfonyでどのように渡すべきですか?

フォームに「Owner」として追加するだけで、文字列変換エラーの配列が表示されます。

答えて

0

配列への文字列変換エラーを回避するには、__toString()機能を作成してOwnerId値を出力する必要があります。

これで、default値を設定するか、送信アクションにロジックを挿入する必要があることを確認するために、doc の説明としてownerプロパティにdisableプロパティを追加することができます。

うまくいきますように!あなたは、フィールドの値を変更するユーザーをしたくない場合は、あなたが設定することができ :

「無効」=>真

ドキュメント:

+0

それが判明し本当の問題は、私はfindBy()functiodを使用し、プロパティに返された値が割り当てられownerプロパティを移入ということでした。関数はオブジェクトの配列を返すため、配列から文字列への変換エラーが発生します。 findOneBy()を使用すると、__toString()関数を正常に呼び出したownerクラスが返されました...残念ながら、もう一方の端のpersistは、クラスではなく整数であることが好きではありませんでした。だから、これは私が持っていた問題を解決しましたが、修正しようとしていた実際の問題です。 – Horaland

0

あなたはオプションを使用することができます無効なオプションをtrueに設定します。提出された値は無視されます。

Official documentation

+0

「提出された値は無視されます」は奇妙なものです。通常はディアブルされた値はフォームには掲載されないので、フォームを介して所有者を渡す編集不能な方法として使用すると動作しませんが、Symfonyでは何らかの理由でそれが行われます。 – Horaland

関連する問題