[PHP] Erreur sur une fonction foreach

Erreur sur une fonction foreach [PHP] - PHP - Programmation

Marsh Posté le 20-04-2009 à 14:55:59    

Bonjour à tous,

 

Je suis actuellement en train d'installer une solution de Gestion de Relation Clients (SugarCRM, open-source, Community Edition - version gratuite). C'est un outil simple, personnalisable et qui ne demande pas de grosses compétences techniques pour des besoins basiques.
J'ai besoin de faire une modification qui sort des possibilités de personnalisation offertes par ce portail et pour laquelle j'ai trouvé une solution sur le site officiel. Malheureusement, cette solution me donne une erreur et personne n'a pu m'aider :(

 

L'erreur concerne une fonction "foreach" et je me dis que si c'est un simple problème de codage, peut-être qu'un développeur comprendra vite le problème et pourra m'aider à le résoudre (et ce, sans forcément connaître en détail le fonctionnement du portail sur lequel je travaille).

 

Voici le code en question:

Code :
  1. <?php
  2. require_once('include/MVC/View/views/view.edit.php');
  3. class AccountsViewEdit extends ViewEdit {
  4.      function display() {
  5.         if(empty($this->bean->id)) {
  6.             global $app_strings;
  7.             sugar_die($app_strings['ERROR_NO_RECORD']);
  8.         }
  9.         require_once('custom/modules/' . $this->bean->module_dir . '/metadata/toggle_panel_fieldsdefs.php');
  10.        
  11.         global $current_user;
  12.         foreach($toggle_panel_fieldsdefs as $role => $field_defs) {
  13.             foreach($field_defs as $field => $visible) {
  14.                 foreach($value_defs as $panel => $panel_defs) {
  15.                     $panel = strtoupper($panel);
  16.                     if($visible == 0 && isset($this->dv->defs['panels'][$panel]) && $check_role->check_role_membership($role)) {
  17.                         unset($this->dv->defs['panels'][$panel]);
  18.                     }
  19.                 }
  20.             }
  21.         }
  22.         $this->dv->process();
  23.         echo $this->dv->display();
  24.     }
  25. }
  26. ?>
 

L'erreur qui apparaît sur le site avec ce code:

Code :
  1. Notice: Undefined variable: value_defs in [...]\custom\modules\Accounts\views\view.edit.php on line 18
  2. Warning: Invalid argument supplied for foreach() in [...]\custom\modules\Accounts\views\view.edit.php on line 18
 

Petit résumé rapide de mon portail et des personnalisations: dans ce portail (Sugar), j'ai une page qui permet de créer/éditer les infos d'un contact ou d'une organisation. J'ai personnalisé cette page en y incluant plusieurs cadres (appelés 'panel' dans Sugar) dans lequels on peut modifier/ajouter des infos (1 cadre contient plusieurs champs regroupés par "thème" ).
Je voudrais cacher certains cadres en fonction des permissions des utilisateurs du système (définis dans les paramètres et dans le fichier toggle_panel_fieldsdefs.php). J'ai donc créé/modifié 3 fichiers en tout qui doivent normalement être pris en compte par le système (les fichiers inclus dans le dossier 'custom' remplacent les paramètres par défaut du système) et malheureusement, là, ca coince :(

 

Est-ce que quelqu'un voit un problème dans le code que j'ai posté ou faut-il chercher ailleurs ?

 

Pour info, cette modif est décrite en détail ici : https://www.sugarcrm.com/forums/showthread.php?t=39599

 

Si c'est un problème sur l'ensemble des modifs et fichiers environnants, j'ai peur ne pouvoir compter que sur leur support (qui est très léger pour la version gratuite donc c'est pas gagné :( ). Si ce n'est qu'un problème de code, j'espérais qu'un codeur pourrait gentillement m'aider à le corriger :)

 

Merci d'avance à qui pourra m'éclaircir d'une façon ou d'une autre  :jap:


Message édité par Mariton le 20-04-2009 à 14:58:00
Reply

Marsh Posté le 20-04-2009 à 14:55:59   

Reply

Marsh Posté le 20-04-2009 à 15:11:54    

Ben il est défini où $value_defs ? A priori nul part, et donc forcément foreach il aime pas ca [:spamafote]


---------------
We deserve everything that's coming...
Reply

Marsh Posté le 21-04-2009 à 07:56:35    

Anaÿfaÿe [:klemton]

 

Et j'imagine que le bout de code que j'ai donné (+ les quelques explications du contexte ou du résultat attendu) ne permettraient pas de deviner ce qu'il manque (en essayant de retrouver la logique par exemple) ? [:gratgrat]

 

Merci :jap:


Message édité par Mariton le 21-04-2009 à 07:57:07
Reply

Marsh Posté le 21-04-2009 à 09:11:50    

Vu que tu sembles utiliser des variables globales (caylemal :o), potentielement $value_defs en est aussi une, il "suffirait" alors de la déclarée comme telle. A tester (ou à modifier) ;)

Message cité 1 fois
Message édité par SICKofitALL le 21-04-2009 à 09:12:09

---------------
We deserve everything that's coming...
Reply

Marsh Posté le 21-04-2009 à 16:12:29    

SICKofitALL a écrit :

Vu que tu sembles utiliser des variables globales (caylemal :o), potentielement $value_defs en est aussi une, il "suffirait" alors de la déclarée comme telle. A tester (ou à modifier) ;)


Merci pour ton aide encore une fois :jap:

 

Alors d'après ce que disait une personne sur le forum officiel, la variable devrait être

Citation :

$this->dv->defs

 

Alors pour commencer, est-ce que ca vous paraît une solution logique ou est-ce que ça n'a pas de sens et que ca risque de me donner une erreur ?

 

Si ca paraît faisable, je sais malheureusement pas du tout comment modifier le code avec cette info (ne sachant pas coder) et vu que le mec qui a posté ça l'a écrit en vrac, je ne sais qu'en faire [:airforceone]
Est-ce que quelqu'un peut me dire comment je le rajoute dans mon bout de code?

 

Merci d'avance  :jap:


Message édité par Mariton le 21-04-2009 à 16:14:09
Reply

Marsh Posté le 21-04-2009 à 17:07:03    

Tu n'as pas accès en modification sur le code ?
Si tu as pu le lire, normalement tu dois pouvoir le modifier :??:


---------------
We deserve everything that's coming...
Reply

Marsh Posté le 22-04-2009 à 03:53:43    

Je me suis mal exprimé :D
 
J'ai bien accès au code sauf que je ne suis pas codeur (noob inside) donc j'ai beau avoir la solution et comprendre un peu à quoi ça correspond, je suis incapable de faire la modif par moi-même, ne sachant pas quoi ajouter/modifier dans le code pour arriver au résultat :/
 
Ce serait donc très sympa si quelqu'un pouvoit juste m'écrire la partie à ajouter pour définir cette variable et m'indiquer où je dois l'insérer :)
 
Merci d'avance  :jap:


Message édité par Mariton le 22-04-2009 à 03:55:32
Reply

Marsh Posté le 23-04-2009 à 08:35:45    

Bon, problème réglé, y'a finalement un gars du support qui a eu la gentillesse de revoir ce bout de code qui n'allait pas :)
 
Merci encore ;)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed