2

Zend、Doctrine2.1、AnnotationFormsを使用しています。

私のエンティティは次のようになります。

/**
 * @ORM\Entity
 * @ORM\Table(name="myentity")
 * @Form\Name("myentity")
 * @Form\Attributes({ "class": "form-horizontal" })
 * @Form\Hydrator("\DoctrineModule\Stdlib\Hydrator\DoctrineObject")
*/
class MyEntity {
   ...
}

これを使用するDoctrineObjectと、次のエラーが発生します。

キャッチ可能な致命的なエラー:DoctrineModule \ Stdlib \ Hydrator \ DoctrineObject :: __construct()に渡される引数1は、Doctrine \ Common \ Persistence \ ObjectManagerのインスタンスである必要があり、指定されていません。C:\ vendor \ zendframework \ zendframework \ library\Zendで呼び出されます。 566行目の\Form\ Factory.phpで、63行目のC:\ vendor \ doctrine \ doctrine-module \ src \ DoctrineModule \ Stdlib \ Hydrator\DoctrineObject.phpで定義されています

使用できないZend\Stdlib\Hydrator\ObjectPropertyので

致命的なエラー:保護されたプロパティにアクセスできません

私はかなり迷っています。この問題を解決するために私に何ができるか考えている人はいますか?

関数が必要だと思い__construct()ます。しかし、私はそこに何を入れますか?

4

3 に答える 3

3

誰かが注釈のみの関数を思いつくかもしれませんが、それが存在する場合は、次のアプローチに進むことができます。

$form = //create the annotation form WITHOUT a hydrator
$objectManager = $serviceLocator->get('Doctrine\ORM\EntityManager');
$hydrator = new \DoctrineModule\Stdlib\Hydrator\DoctrineObject($objectManager);
$form->setHydrator($hydrator);

//continue in your controller
于 2012-12-27T13:54:32.007 に答える
0

注釈フォームにも問題がありました。私の解決策はマインドブレイカーでした。見つけるのに長い時間がかかりました。私の問題は、注釈コードの最初の行にありました。

/**

この行は通常、注釈コードのコメントに使用されますが、ほとんどの人は空のままにします。通常は問題ありませんが、フォーム注釈で何らかの問題が発生しています。コメントを追加するか、スペースを追加するか、コードの最初の行を上に移動する必要があります。そう:

/** Some comment to make this annotation work
/** (<-- a space)

または次のように開始します。

/** @ORM\Entity

なぜこれが起こっているのか私に聞かないでください (何らかの解析エラー?)。これは、誰かが同様の問題を報告した GitHub の投稿 ( https://github.com/doctrine/common/issues/331 ) で見つけました。私が理解しているように、バグは教義ではなく、ZF2 の問題であり、報告されています。

これもあなたの問題かどうかはわかりませんが、これを投稿することは私ができる最低限のことでした...

于 2013-04-04T17:30:02.637 に答える
-1

このソリューションを見てください、それはかなり良いです

于 2013-06-26T21:16:31.137 に答える