0

このチュートリアルに従いました: http://symfony.com/doc/current/cookbook/doctrine/file_uploads.html#using-lifecycle-callbacks

ただし、prePersistは起動されません (ただし、エンティティはデータベースに永続化されます)。

   $media = new Media();
   $form = $this->createFormBuilder($media)
            ->add('file')
            ->getForm();

        if ($request->isMethod("POST")) {
            $form->bindRequest($request);

            if ($form->isValid()) {
                $em = $this->getDoctrine()->getManager();

                $em->persist($media);
                $em->flush();
            }
    }

エンティティ: http://dpaste.com/869771/ (コピーしてクラスに貼り付けたコードの一部)

追加した

die("test");

アップロード関数に渡されますが、呼び出されません。では、何が問題なのですか?何か案は?私はsf2.1を使用しています。

4

3 に答える 3

4

ペーストビンに貼り付けたコードが正確であると仮定すると、問題は、xml マッピングと注釈マッピングを混在させようとしていることです。いずれかの方法を使用する必要があります。

このリンク: http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/events.html

に、ライフサイクル マッピングを xml ファイルに追加する方法を示します。

于 2013-01-10T00:43:45.937 に答える
1

ただし、prePersist は起動されません...アップロード機能に

PrePersist() ではなく、 upload () メソッドでPostPersist()を使用しているため、起動されません。

PostPersist は保存後に起動されますが、PrePersist は保存前に起動されます! そのため、保存前ではなく保存後に「死ぬ」と表示されます。

さらに、PrePersist を使用する場合、エンティティにはまだ ID がありませんが、PostPersist を使用すると ID が割り当てられます。

于 2013-01-09T19:58:52.500 に答える
0

よくわかりませんが、 Mediaエンティティにはマップされたフィールドがないため、イベントは無視されると思います。たとえば
、フィールドをマッピングして、機能しているかどうかを確認してください。また、追跡ポリシー についてもお読みください。name

于 2013-01-09T20:13:40.893 に答える