独自のテンプレートでレンダリングするためにコレクションフォームを拡張しようとしています...
class ContactFieldType extends AbstractType
{
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'collection' => array('type' => new ContactType())
));
}
public function getParent()
{
return 'collection';
}
public function getName()
{
return 'contactField';
}
}
そして、私はこのタイプを次のように使用します。
$builder->add('contacts',new ContactFieldType(), array(
'label_attr' => array('class' => 'contacts')
));
次のエラーが表示されます。
フォームのビュー データは、タイプがスカラー、配列、または \ArrayAccess のインスタンスであると予想されますが、クラス MyApp\MainBundle\Entity\Contact のインスタンスです。このエラーを回避するには、「data_class」オプションを「MyApp\MainBundle\Entity\Contact」に設定するか、クラス MyApp\MainBundle\Entity\Contact のインスタンスをスカラー、配列、または \ のインスタンスに変換するビュー トランスフォーマーを追加します。配列アクセス。
私がこれを使用する場合:
$builder->add('contacts','collection', array(
'type' => new ContactType(),
'label_attr' => array('class' => 'contacts')
));
それは正常に動作します。
提案されているように、この data_class を実装したくありません... コレクション ウィジェットを拡張したい