Php 我想上传一张带有symfony2和doctor的个人资料图片

Php 我想上传一张带有symfony2和doctor的个人资料图片,php,symfony,orm,doctrine-orm,doctrine,Php,Symfony,Orm,Doctrine Orm,Doctrine,在User.php(实体名为User)中,我在用户实体中有一个名为userPic的字段,键入String 在文件UserType.php中,我提到了userPic,如下所示: public function buildForm(FormBuilderInterface $builder, array $options) { $builder ->add('userFullname') ->add('userName') ->

在User.php(实体名为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
    ...
}

希望这能有所帮助。

从官方文档来看:我已经有了用户实体类,其中有getter setter setUserPic()getUserPic(),我在其中遇到了一些问题,我有一个问题,请相应地指导我,我将不胜感激。这个问题与FOS用户包有关,我希望在RegisterType中创建的自定义表单中嵌入角色。我已经从基本实体扩展了我的用户实体。对于一个新问题,请随意创建一个新问题,因为注释不适用于此用途。此外,它将获得比评论更好的可视性。谢谢通知,因为我在这里的声誉太低,这就是为什么Stakeoverflow不允许我问很多问题的原因。
if ($form->isValid()) {
    $file = $form->getData()['file'];
    $file->move('/your/path/to/your/file', 'yourFileName');
    // Do the rest
    ...
}