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
-~----------~----~----~----~------~----~------~--~---