在非对象上调用成员函数move()

时间:2018-03-25 21:58:00

标签: php symfony-2.3

我真的很想知道为什么每当我尝试通过Symfony2中的表单上传照片时我都会收到此错误消息:

  

错误:在非对象上调用成员函数move()

这是我的实体文件中存在的代码( Photo.php ):

<?php

namespace Boutique\ProduitBundle\Entity;
use Symfony\Component\Validator\Constraints as Assert;

use Doctrine\ORM\Mapping as ORM;

/**
 * Photo
 *
 * @ORM\Table()
 * @ORM\Entity
 */
class Photo
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @var string
     *
     * @ORM\Column(name="image", type="string", length=255)
     */
    private $image;

    /**
     * 
     * @Assert\File(maxSize="5000k")
     */
    public $file;

    /**
     * Get id
     *
     * @return integer 
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * Set image
     *
     * @param string $image
     * @return Photo
     */
    public function setImage($image)
    {
        $this->image = $image;

        return $this;
    }

    /**
     * Get image
     *
     * @return string 
     */
    public function getImage()
    {
        return $this->image;
    }

    public function getWebPath()
    {
        return null === $this->image ? null : $this->getUploadDir().'/'.$this->image;
    }
     protected function getUploadRootDir()
    {
        // le chemin absolu du répertoire dans lequel sauvegarder les photos de profil
        //return __DIR__.'/../../../../web/groupe/'.$this->getUploadDir();
        return __DIR__.'/../../../../web/'.$this->getUploadDir(); 
    }

    protected function getUploadDir()
    {
        // get rid of the __DIR__ so it doesn't screw when displaying uploaded doc/image in the view.
        return 'uploads/pictures';
    }
     public function uploadPhotoPicture()
    {
        // Nous utilisons le nom de fichier original, donc il est dans la pratique 
        // nécessaire de le nettoyer pour éviter les problèmes de sécurité

        // move copie le fichier présent chez le client dans le répertoire indiqué.
        $this->file->move($this->getUploadRootDir(), $this->file->getClientOriginalName());

        // On sauvegarde le nom de fichier
        $this->image = $this->file->getClientOriginalName();

        // La propriété file ne servira plus
        $this->file = null;
    }
}

控制器文件中的代码:

    <?php

namespace Boutique\ProduitBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Boutique\ProduitBundle\Entity\Photo;
use Boutique\ProduitBundle\Form\PhotoType;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Response;

class DefaultController extends Controller
{    
   public function ajoutphotoAction(Request $request)
    {
        $photo = new Photo();
        $form = $this->createForm(new PhotoType(), $photo);
        if ($request->isMethod('POST')) {
            $form->handleRequest($request);
            if ($form->isValid()) {
                $em = $this->getDoctrine()->getManager();
                $photo->uploadPhotoPicture();
                $em->persist($photo);
                $em->flush();
                $request->getSession()->getFlashBag()->add('success', 'Photo bien enregistrée.');
                return new RedirectResponse($this->generateUrl('boutique_photo_ajout'));
            }
        }
        return $this->render('BoutiqueProduitBundle:Ajoutphoto:ajout.html.twig',
                array('form' => $form->createView()));
    }
}

我想知道我的代码中有什么问题。有什么遗漏吗?

0 个答案:

没有答案