Erreur php module joomla

Petit nouveau ! | 6 Messages

17 juin 2020, 18:36

Bonjour à tous,
Je viens de mettre à jour mon site joomla en 3.9.19 et de passer en php 7.2.
Tout est ok sur le site sauf le formulaire.
Il s'affiche correctement sauf qu'il affiche au dessus des champs la ligne suivant en 13 exemplaires !!

Notice: Undefined property: stdClass::$displaysublayout in /public_html/components/com_visforms/models/visforms.php on line 578

Je ne connais pas grand chose en php mais j'ai l'impression que cette ligne indique que la propriété displaysublayout n'est pas reconnue. Il fonctionne parfaitement sous php 5.6, mais pas sous php 7, ni php 7.2.
Le formulaire est VisForms de Vi-solutions. En ayant fait quelques recherches sur le web, j'ai constaté que plusieurs sites avaient ce problème.
Ci-joint dessous la partie de code concernée.
Merci d'avance pour vos réponses.
Cordialement
//called from view
	public function getFields() {
		$visform = $this->getForm();
		$app = JFactory::getApplication();
		$this->fields = $app->getUserState('com_visforms.' . $this->context . '.fields');
		if (!is_array($this->fields)) {
			$fields = $this->getValidatedFields();
		}
		else {
			$fields = $this->fields;
		}
		$n = count($fields);
		//prepare HTML
		for ($i = 0; $i < $n; $i++) {
			$html = VisformsHtml::getInstance($fields[$i]);
			if (is_object($html)) {
				$ofield = VisformsHtmllayout::getInstance($visform->formlayout, $html, $visform->displaysublayout);
				if (is_object($ofield)) {
					$fields[$i] = $ofield->prepareHtml();
				}
			}
		}
		$this->fields = $fields;
		return $this->fields;
	}

Petit nouveau ! | 6 Messages

17 juin 2020, 19:02

Correctif, l'erreur s'affiche aussi avec php 5.6 !...

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 8627 Messages

18 juin 2020, 11:13

$visform->displaysublayout
Tu as la bonne réflexion : $visform n'a pas de propriété displaysublayout
Donc à toi de remonter à la création de cette variable $visform pour comprendre pourquoi, mais sans connaitre ton script c'est difficile de t'aider davantage.


Vérifie que tu as bien la dernière version de Joomla, et aussi la dernière version des extensions, car visiblement le message est généré par un composant "com_visforms"
Quand tout le reste a échoué, lisez le mode d'emploi...

Petit nouveau ! | 6 Messages

18 juin 2020, 12:22

Merci Arthur pour ta réponse.
J'ai supprimé la variable
$visform->displaysublayout
du fichier concerné et le message d'erreur a disparu.
Le formulaire semble fonctionner correctement. Je suis bien à jour des dernières versions de Joomla et du formulaire, mais j'aimerai comprendre l'erreur.
Que veux-tu dire par remonter à la création de la variable ?
Est-ce que cette création se trouve dans le même fichier ou dans un autre ?
En faisant une recherche dans le fichier du terme "displaysublayaout", je n'en trouve pas d'autre.
Par contre ce terme est présent dans d'autres fichiers du composant : des fichiers php et xml.
Dans le xml, j'ai un champ défini par ce terme (cf code ci-joint)
<field name="displaysublayout" type="list"
                   label="COM_VISFORMS_BT4_SUBLAYOUT"
                   description="COM_VISFORMS_BT4_SUBLAYOUT_DESC"
                   default="horizontal"
                   onchange="googleReCaptchaBt4ListBoxSelection()"
                   showon="formlayout:bt4mcindividual,uikit3,uikit2"
            >