J'utilise une configuration MVC et j'essaie d'injecter javascript dans mes vues (.php), tout en permettant l'accès javascript à toutes les variables auxquelles la vue a accès à. Mon but final est de pouvoir accéder aux variables PHP à partir de mon javascript (par exemple pour que je puisse alert()
le nom d'un produit).Problème d'utilisation require à l'intérieur d'une fonction et d'une portée variable
Voici mon flux d'application:
- tampon de sortie de démarrage
- extrait d'appel() sur un tableau associé (celui-ci contient les données pour moi)
- appel besoin sur le fichier de vue
- renvoie le contenu du tampon de sortie et efface le tampon
- echo buffer
J'ai une fonction injectJS()
, qui est comme suit:
function injectJS($jsFile) {
require APP_DIR . $jsFile;
}
Voici un échantillon des Javascript (alert.js) Je veux injecter:
<script type="text/javascript">
alert("product name: <?php echo $product['name']; ?>");
</script>
Donc, dans mon fichier de vue, J'appelle le injectJS('alert.js');
. Il injecte le javascript, mais je reçois un avis PHP d'avoir une variable indéfinie $product
quand je rends la vue. Cependant, si j'écris la déclaration require
à la main, tout fonctionne correctement. Est ce que j'essaie d'atteindre en utilisant injectJS()
possible?
Modifier
J'ai oublié de mentionner que j'ai essayé passer les variables explicitement à injectJS()
, et il fonctionne, mais je ne veux pas avoir à passer toujours les variables. Il peut devenir ennuyeux si la vue doit transmettre plusieurs variables au JS. Y at-il un moyen que je pourrais (dans la fonction) saisir les variables dans la portée du script chargé d'appeler le injectJS()
?
Edit 2
À la réflexion, en passant à nouveau les variables est pas un vrai problème, je pense que je suis juste être avide/paresseux;). Je vais simplement passer les variables en cas de besoin à injectJS()
. Merci pour les réponses
ne pourriez-vous pas passer un grand tableau contenant tout, y compris $ produits? Ou est-ce encore désordonné à ton avis? –