簡體   English   中英

我想上傳帶有symfony2和主義的頭像

[英]I want to upload a profile picture with symfony2 and doctrine

在User.php(實體名稱為User)中,我在User實體中有一個名為userPic的字段,鍵入String

在文件UserType.php中,我提到了userPic ,如下所示:

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->add('userFullname')
        ->add('userName')
        ->add('userEmail')
        ->add('userPassword')
        ->add('userPic', 'file', array ('label'=>'profile Picture'))
        ->add('gender','choice',array('choices' => array('m' => 'Male', 'f' => 'Female')))

        ->add('isActive')
    ;
}

現在在控制器中,我得到如下所示的表單字段

/**
 * Creates a new User entity.
 *
 */
public function createAction(Request $request)
{
    $entity = new User();
    $form = $this->createCreateForm($entity);
    $form->handleRequest($request);

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

        return $this->redirect($this->generateUrl('user_show', array('id' => $entity->getId())));
    }

    return $this->render('MWANRegisterBundle:User:new.html.twig', array(
        'entity' => $entity,
        'form'   => $form->createView(),
    ));
}

我必須在哪里提供保存圖片的路徑? 如何將上載的文件保存在所需目錄中,並將目錄路徑保存在數據庫中?

克里斯蒂安的回答是正確的,但是我只想更具體地指出如何去做被問到的事情。 只需:

if ($form->isValid()) {
    $file = $form->getData()['file'];
    $file->move('/your/path/to/your/file', 'yourFileName');
    // Do the rest
    ...
}

希望這可以幫助。

您需要在實體中創建上傳方法。 檢查此鏈接以獲取更多詳細信息http://symfony.com/doc/current/cookbook/doctrine/file_uploads.html

public function uploadFile()
{
    // the file property can be empty if the field is not required
    if (null === $this->getFile()) {
        return;
    }

    // use the original file name here but you should
    // sanitize it at least to avoid any security issues

    // move takes the target directory and then the
    // target filename to move to
    $this->getFile()->move($this->getUploadDir(), $this->getFile()->getClientOriginalName());

    // set the path property to the filename where you've saved the file
    $this->path = $this->getFile()->getClientOriginalName();

    // clean up the file property as you won't need it anymore
    $this->file = null;
}

/**
 * Creates a new User entity.
 *
 */
public function createAction(Request $request)
{
    $entity = new User();
    $form = $this->createCreateForm($entity);
    $form->handleRequest($request);

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

        // Upload file
        $entity->uploadFile();    

        $em->persist($entity);
        $em->flush();

        return $this->redirect($this->generateUrl('user_show', array('id' => $entity->getId())));
    }

    return $this->render('MWANRegisterBundle:User:new.html.twig', array(
        'entity' => $entity,
        'form'   => $form->createView(),
    ));
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM