Bonjour,

j'aimerai recharger le ProfileFormHundler de FosUserBundle pour ajouter la fonctionnalité de modification de la photo du profile; j'ai copié collé le ProfileFormHundler.php de FosuserBundle et j'ai ajouté le code approprié pour le traitement de l'image ainsi un bout de code pour récupérer le contenu du champs file; voici le code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
 
<?php
/*
 * This file is part of the FOSUserBundle package.
 *
 * (c) FriendsOfSymfony <http://friendsofsymfony.github.com/>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */
 
namespace Ecommerce\UserBundle\Form\Handler;
 
use Symfony\Component\Form\Form;
use Symfony\Component\HttpFoundation\Request;
 
use FOS\UserBundle\Model\UserInterface;
use Ecommerce\UserBundle\Form\ProfileFormType;
use FOS\UserBundle\Model\UserManagerInterface;
use FOS\UserBundle\Form\Model\CheckPassword;
use FOS\UserBundle\Form\Handler\ProfileFormHandler as BaseHandler;
use Ecommerce\boutiqueBundle\services\image;
 
class ProfileFormHandler  extends BaseHandler
{
    protected $request;
    protected $userManager;
    protected $form;
 
 protected $upload='upload\logo\\';
    public function __construct(Form $form, Request $request, UserManagerInterface $userManager)
    {
        $this->form = $form;
        $this->request = $request;
        $this->userManager = $userManager;
    }
   public function setLogo($image_filename)
		{
		   $image=$this->form->getData('logo');
 
			$image = new Image($image);
 
			$image->resize_to(90, 75);
 
			$image->save_as($image_filename);
		 }
    public function process(UserInterface $user)
    {
 
//user form has email and repeating password fields    
        $this->form->setData(new CheckPassword($user));
        if ('POST' === $this->request->getMethod()) {
            $this->form->bindRequest($this->request);
 
            if ($this->form->isValid()) {
			$img=$this->form->getData('logo');
		  if($img!="" and $img!=null)
		  {
		  $this->setLogo($this->upload.uniqid().'_'.$img->getClientOriginalName());
		  $image=$user->setLogo(uniqid().'_'.$img->getClientOriginalName());
		  }
                $this->onSuccess($user);
 
                return true;
            }
 
            // Reloads the user to reset its username. This is needed when the
            // username or password have been changed to avoid issues with the
            // security layer.
            $this->userManager->reloadUser($user);
        }
 
        return false;
    }
 
    protected function onSuccess(UserInterface $user)
    {
        $this->userManager->updateUser($user);
    }
}
ce code me génére l'erreur suivante:

Fatal error: Call to undefined method FOS\UserBundle\Form\Model\CheckPassword::getClientOriginalName() in /var/www/rawaje.com/Symfony277/src/Ecommerce/UserBundle/Form/Handler/ProfileFormHandler.php on line 59

et quant je remplace cette ligne :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
  $this->form->setData(new CheckPassword($user));
par celle là:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
  $this->form->setData($user);
j'obtiens cette erreur:

Expected argument of type "FOS\UserBundle\Form\Model\CheckPassword", "Ecommerce\UserBundle\Entity\User" given
500 Internal Server Error - UnexpectedTypeException


Merci pour votre aide d'avance.