getParam depuis une class enfant
Bonjour,
Pour un de mes plugins j'ai besoin d'atteindre la fonction $plxPlugin->getParam() depuis une classe enfant. Pourquoi enfant ? Mon plugin est découpé en plusieurs class et je les charge dans la class principal du plugin.
// Class principal
class portail extends plxPlugin {
private $_database = false;
private $_portailUtils = false;
public $_portailExports = false;
private $_portailClients = false;
private $_portailAdv = false;
private $_portailCrm = false;
private $_xlsxWriter = false;
public function __construct($lang) {
parent::__construct($lang);
$this->setConfigProfil(PROFIL_ADMIN);
[...]
if(!class_exists('portailUtils')) { die('class portailUtils absent'); }
$this->_portailUtils = new portailUtils($this->_database);
if(!class_exists('xlsxWriter')) { die('class xlsxWriter absent'); }
$this->_xlsxWriter = new xlsxWriter();
[...]
// class enfant
class portailCrm {
public function __construct($database, $xlsWriter, $portailUtils, $portailClients, $portailAdv) {
$this->database = $database;
$this->_xlsxWriter = $xlsxWriter;
$this->_portailUtils = $portailUtils;
$this->_portailClients = $portailClients;
$this->_portailAdv = $portailAdv;
}
[...]
public function formRecherchePdv($value) {
global $plxShow, $plxMotor, $plxPlugin;
$error = false;
echo <<<EOF
<script>
$(function() {
$("#client_search").autocomplete({
minLength: 3,
source: function(request, response) {
$.ajax({
url: '{$plxPlugin->getParam('jqueryurl')}', --> C'est ici que j'ai besoin de la config
cache: false,
dataType: "json",
data: {
term: request.term,
a: 'searchpdv',
j: '1',
rep: '{$_SESSION['portail']['rep0']}',
maxRows: '20'
},
[...]
Comment faire pour accéder à aux paramètres ?
P.S. : désolé je n'ai pas réussi à utiliser les balises de code :(
EDIT (@Kube17): J'ai réussi pour toi 😉
J'ai un string de l'array
Connectez-vous ou Inscrivez-vous pour répondre.

Réponses
Slt flipflip
Je saisi le $plxShow, le $plxMotor. mais $plxPlugin me semble inutile a ce niveau... (et peut-être les autres)
Lorsque l'on est dans une fonction de la classe principale on utilise le $this->getParam() pour accéder au paramètres, remplace $plxPlugin par ça
$this->getParam('jqueryurl')et cela doit rouler ;)
[édit] en fait en relisant il faudrait en savoir plus ... et arriver que la classe enfant soit au courant de la classe parent, ce qui pourrai donner :
$this->portail->getParam('jqueryurl')Bon dev
Notre temps est la seule monnaie vraie ;)
Site, Dépôt, framagit, MyShop, Factux
#mozinor président
Merci @Kube17 ;) Je dois vraiment être quiche mais même pour cette réponse je ne trouve pas comment mettre la balise code :)
J'ai essayé ça :
$this->portail->getParam('jqueryurl');$portail->getParam('jqueryurl');Dans les logs apache j'ai :
PHP Fatal error: Call to a member function getParam() on nullJe vois pas trop d'autres façons de faire :(
J'ai un string de l'array
Slt @flipflip
Il y a 2 possibilités...
<?php include __DIR__.DIRECTORY_SEPARATOR.'class.portailCrm.php';#Ou codé ds le fichier #Classe principale class portail extends plxPlugin { ··· public $portailCrm;#Pour Accueillir l'instance enfant ··· public function __construct($lang) { parent::__construct($lang); #1e soluce #On instancie portailCrm avec sa classe parente en paramètre $this->portailCrm = new portailCrm($this, $database, ...); #ou alors #2e soluce $this->portailCrm->portail = &$this;#on place (par référence?) la classe parent ds l'enfant ··· } #Ensuite ds la classe dite "enfant" (fichier ou en suivant) #classe enfant class portailCrm { public $portail;#Pour Accueillir l'instance parent #1e & #2e Soluce public $database; public $_xlsxWriter; public $_portailUtils; public $_portailClients; public $_portailAdv; ##1e soluce public function __construct(&$portail, $database, $xlsWriter, $portailUtils, $portailClients, $portailAdv) { $this->portail = $portail;#classe parent ##Fin 1e soluce $this->database = $database; $this->_xlsxWriter = $xlsxWriter; $this->_portailUtils = $portailUtils; $this->_portailClients = $portailClients; $this->_portailAdv = $portailAdv; #Pour la #2e soluce le constructeur de la classe enfant reste le même que celui de l'exemple du sujet de ce fil #Ds les deux cas la classe portailCrm (enfant) accedera aux fonction parent ainsi public function formRecherchePdv($value) { ··· $this->portail->getParam('jqueryurl');Cela devrai faire l'affaire.
Et pour afficher en mode code ds le forum :
colle ton code, sélectionne le et sur la gauche (au milieu de ta sélection et ds le gris a l’extérieur de l'éditeur) clique sur l’icône paragraphe ¶ qui ouvre un sous menu, clique sur l’icône citer “ et là se trouve l’icône code </>
😉
Notre temps est la seule monnaie vraie ;)
Site, Dépôt, framagit, MyShop, Factux
#mozinor président