Je développe un composant. Sur le modèle de partie de site, dans getItem($pk)
J'utilise:
$params = new JRegistry;
$params->loadString($this->item->params, 'JSON');
$this->item->params = $params;
$params =clone $this->getState('params');
$params->merge($this->item->params);
$this->item->params = $params;
alors que dans la méthode populateState
j'ai créé une variable params et obtenu default.xml
params dans un objet JRegistry
et la fusion ne prend en compte que les paramètres backend. En d'autres termes, ce que je fais chez menuitem n'a aucun effet et ne change rien. Kian William
Je l’ai résolu, Eureka, lorsque j’utilisais getState()
pour obtenir la variable que j’avais créée dans populateState
du modèle dans la partie site, je devais le modifier ou l’assigner à un objet de registre afin que la fusion puisse travailler sur deux objets de registre.
$params->loadString($this-getState('params'));
clone()
n'a pas pu changer une chaîne en objet reg.
Dans populateState
, je crée un objet de registre, mais lorsque je l'ai assigné à la variable setState
, il redevient une chaîne, cela fonctionne maintenant.