Bonjour,

J'ai aussi rencontré le problème (pas avec un input type=file mais
deux type=text), que j'ai résolu de la manière suivante :

//Dans la méthode processForm() du controlleur sur l'objet concerné:

protected function processForm(sfWebRequest $request, sfForm $form)
                {
$params = $request->getParameter($form->getName());

if($params['name']=='')
$params['name']=$params['file'];

$form->bind($params, $request->getFiles($form->getName()));

if ($form->isValid()) [...]

Voila. Bon courage :)

Cordialement,

On 12 mai, 10:26, Mailing-list Lélio <[email protected]> wrote:
> Bonjour,
>
> Voilà ce que j'aimerais faire. Dans un formulaire j'ai deux champs : 'name'
> (input text) et 'file' (input file). J'aimerais que si le champ 'name' est
> vide, il prenne la valeur du nom du champ 'file'.
>
> Pour ce faire, j'ai mis en place un sfValidatorSchema en prévalidation.
> Malheureusement, ça ne fonctionne pas : mon champ 'name' reste vide. J'ai
> l'impression que les values modifiés ne sont pas prises en compte alors que
> le validatorSchema est bien utilisé (vérifié).
>
> //dans le DocumentForm.class.php
> Public function configure()
> {
>         parent::configure();
>         //... Manipulation des widget et validator pour chaque champ
>         $this->validatorSchema->setPreValidator(new
> sfValidatorSchemaDocName());
>         //les unset() nécessaires
>
> }
>
> //dans sfValidatorSchemaDocName.class.php
> protected function doClean($values)
> {
>         if (is_null($values)) {
>             $values = array();
>         }
>         if (!is_array($values)) {
>             throw new InvalidArgumentException('You must pass an array
> parameter to the clean() method');
>         }
>         if ('' == trim($values['name'])
>         && isset($values['file'])
>         && is_array($values['file'])
>         && isset($values['file']['name'])) {
>             $values['name'] = $values['file']['name'];
>         }
>
>         return $values;
>
> }
>
> Merci de votre aide
>
> PS : je suis avec symfony 1.2 et Propel.
--~--~---------~--~----~------------~-------~--~----~
Vous avez reçu ce message, car vous êtes abonné au groupe Groupe "Symfony-fr" 
de Google Groupes.
 Pour transmettre des messages à ce groupe, envoyez un e-mail à 
l'adresse [email protected]
 Pour résilier votre abonnement à ce groupe, envoyez un e-mail à 
l'adresse [email protected]
 Pour afficher d'autres options, visitez ce groupe à l'adresse 
http://groups.google.com/group/symfony-fr?hl=fr
-~----------~----~----~----~------~----~------~--~---

Répondre à