2017-05-15 8 views
1

api-platform-generate-crudでリアクタンスコンポーネントを生成する際に問題が発生しました。
モデルには、オブジェクト電子メールのプロパティがあります。 電子メールオブジェクトを文字列にするシリアライザがあります。 APIエンドポイントが文字列を処理しています。
API-PLATFORM - オブジェクトをエンドポイントで文字列にシリアル化したモデル

GET & POSTのために機能します。
私はコンポーネントのエラーメッセージに反応生成しようと、より深いことを検討してい

TypeError: Cannot read property '0' of undefined 

である発電機はまだ私のメールオブジェクトとしてではない文字列を参照してくださいように見えます。

私はどのようにオブジェクトを文字列として電子メールのプロパティを '見る' APIを強制することができますか?

+0

エンティティ定義と、もしあれば使用するカスタムノーマライザを投稿できますか? –

+0

1. [部分エンティティ](https://gist.github.com/mysiar/c664d089e51a6107612d7e22d79f650b) 2. [ノーマライザ](https://gist.github.com/mysiar/2f44a8980133d3df9d82ce6413e3adc6) – mysiar

答えて

2

定義するデータモデルは信頼できます。 Hydraのドキュメントの型は、PHPクラスの型を反映しています。 ここで、emailプロパティのタイプはobjectです。関連するデータをどこかでstringに設定した場合、この契約はもう尊重されません。 Hydraのドキュメントは返されたデータと同期していません。

decoratingapi_platform.hydra.normalizer.documentationサービスによって、Hydraドキュメントのemailプロパティのタイプを変更することができます。

しかし、私はエンティティのPHPクラスの構造を、APIを介して公開されている構造のできるだけ近くに保存することをお勧めします。 クラスにはAPIの出力が反映されている必要があります。構造体を水和して公開する前に、カスタムデータプロバイダを使用してより複雑なデータ構造(例:ORMエンティティ)を扱うことができます。

関連する問題