Comment accédé à une variable d’un fichier PHP externe pour être utilisé dans une méthode d’un composant pur cake
Le problème :
Je souhaite que le composant cake charge un fichier PHP ou il est déclaré, une variable de type tableau voir ci-dessous source « fruits.php » jusqu’ici pas de problème si je fais un debug($fruits) juste avant la déclaration de la classe, je trouve le tableau $fruits.
Mais dans ma classe et pour la méthode fruit voir source du composant cake « fruits.php » cake me retourne le message suivant : Notice (8): Undefined variable: fruits [APP/controllers/components/fruit.php, line 09]
J’ai essayé avec la méthode App::import("Vendor", "fruits", array("file"=>"fruits".DS."fruits.php"));
Mais sans succès.
Je remercie tous les acteurs de Grafikart.fr qui m'apporteront une explication et sa solution.
source fruits.php :
<?php
$fruits = array(
"01" => "Bannane",
"02" => "Orange",
"03" => "Pamplemousse",
"04" => "Fraise",
"05" => "Pomme",
"06" => "Raisin",
"07" => "Franboise");
?>
Source du composant fruit.php:
<?php
define ("TEST_DIR", ROOT.DS.APP_DIR.DS."controllers".DS."components".DS."Fruits".DS);
include(TEST_DIR. "fruits.php");
class FruitComponent extends Object {
function fruit($index) {
return $fruits$index];
}
}
?>
Bonsoir,
Peut-être en ajoutant un global $fruit dans ta fonction.
<?php
define ("TEST_DIR", ROOT.DS.APP_DIR.DS."controllers".DS."components".DS."Fruits".DS);
include(TEST_DIR. "fruits.php");
class FruitComponent extends Object {
function fruit($index) {
global $fruit;
return $fruits$index];
}
}
?>
Merci pour cette solution, mais hélas, elle ne retourne rien.
J'avais essayé avec $GLOBAL$fruits] mais ça ne fonctionnait pas non plus.
La solution a été trouvée par scarabe du forum français de cakephp que je remercie.
Voici la solution pour les personnes qui sont intéressées par le sujet.
<?php
class FruitComponent extends Object {
var $fruits = null;
function fruit($index) {
if (is_null($this->fruits)){
include(dirname(__FILE__).DS.'fruits.php');
$this->fruits = $fruits;
}
if (isset($this->fruits$index])){
return $this->fruits$index];
}
return false;
}
}
?>
Merci à tous.