web-dev-qa-db-fra.com

Comment utiliser joomla getUserState et setUserState pour conserver les valeurs de champ de formulaire

J'essaie de recharger un formulaire avec des données remplies à l'aide de getUserState. J'ai lu ce document plusieurs fois mais je n'ai pas compris où, à mon avis, le modèle devrait définir userStatae. Je sais que je devrais obtenir getuserState dans mon modèle avec quelque chose comme ça.

$mainframe =JFactory::getApplication();
$stateVar = $mainframe->getUserState( "option.state_variable", 'state1' );

Quelqu'un peut-il m'aider pour savoir où définir userState et comment transmettre la valeur getUserState à ma présentation?

3
user3750985

C’est comme cela que je le fais, j’espère que cela vous aidera.

dans vous view.html.php (voir le fichier)

 $app   = JFactory::getApplication();    
$this->data = $app->getUserStateFromRequest('com_yourcomponent.yourform.form.data','data');

    if (!this->data)
    {
      //Set default values
      $this->data['field1'] = '';
      $this->data['field2'] = '';
      $this->data['field3'] = 1;
    }

Dans votre fichier de modèle.

Les champs de formulaire doivent être comme ceci:

<input type = "text"  name  = "data[field1]"
     value      = "<?php echo $this->data['field1'] ?>" >                                  

Dans votre fonction dans votre contrôleur, obtenez les données de cette façon

  $app  = JFactory::getApplication();    
$data   = $app->getUserStateFromRequest('com_yourcomponent.yourform.form.data','data');

S'il y a une erreur, vous redirigez vers la même page de formulaire et les valeurs sont là. Si vous validez les modifications, vous devez vider les informations avant de rediriger en utilisant ceci:

$app->setUserState('com_yourcomponent.yourform.form.data', null);
3
Piero Marsilio