Symfony2和Doctrine - @ORM \ PostPersist()不起作用

时间:2013-07-11 08:10:06

标签: php symfony file-upload doctrine-orm

我的Symfony2项目上有一个文件上传功能。 我以http://symfony.com/doc/current/cookbook/doctrine/file_uploads.html为例。

问题是我的@ORM \ PostPersist()没有被触发,我的文件没有存储在特定文件夹中。

这就是我所拥有的:

1个实体“手稿”我将管理文件:

 /**
 * @ORM\PostPersist()
 * @ORM\PostUpdate()
 */
public function upload()
{
    if (null === $this->file) {
        return;
    }

    $this->file->move( $this->getUploadRootDir().date('Ymdhis').'_'.$this->file->getClientOriginalName() );
}

我尝试将var_dump()放在那里,但var_dump()从未被操作过,所以我永远不会进入那里。

在我的表单中,我有文件:

 public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder->add('file', 'file', array('label'=> 'HTM File', 'required' => true));
}

最后,在控制器中,我有

if ($request->isMethod('POST')) {

        $form->bind($request);

        if ($form->isValid()) {
            $em_scipub->persist($enquiry);  
            $em_scipub->flush();
            ....

1 个答案:

答案 0 :(得分:4)

我解决了这个问题,我忘了添加的想法是@ORM \ HasLifecycleCallbacks

因此,在Manuscript实体中,它看起来应该是这样的:

/**
* Manuscripts
*
* @ORM\Table(name="manuscripts")
* @ORM\Entity
* @ORM\HasLifecycleCallbacks
* 
*/

class Manuscript
{
  ....