Utilisation de variables PHP dans des fichiers d'inclusion Javascript pour une visualisation dans MVC

StackOverflow https://stackoverflow.com/questions/1640274

Question

Supposons que j'utilise un framework MVC et que mes vues nécessitent des fichiers Javascript situés dans un fichier externe à la vue. Mon code javascript situé dans le fichier externe dépend toutefois, à mon avis, de quelques variables PHP. Si je devais inclure le code Javascript dans une balise de ma vue HTML, je pourrais simplement injecter les variables PHP dans le code JavaScript.

Je sais que je peux créer des champs de saisie masqués et attribuer les variables dont j'ai besoin comme valeurs. Y a-t-il un autre moyen plus élégant?

Je sais que je pourrais probablement me permettre de nommer le fichier .js en .php, mais je n'aime pas trop cela.

Était-ce utile?

La solution

Je ne suis pas sûr de bien comprendre votre question, mais si j'ai bien compris l'essentiel, ne pourriez-vous pas simplement définir des variables globales javascript dans une balise de script dans la vue, qui seraient ensuite transmises à votre js externe?

<script type="text/javascript">
  var myvar1 = <?=$myvar1 ?>;
  var myvar2 = "<?=$myvar2 ?>";
</script>
<script type="text/javascript" src="myexternaljs.js"></script>

Autres conseils

Vous pouvez appeler JS vers le serveur (par exemple, REST) ??pour obtenir les variables dont vous dépendez. Vous devrez créer un service pour cela, mais la structure restera propre.

Vous pouvez les poster sur la page avant d'inclure d'autres scripts, ou utiliser quelque chose comme ceci et inclure le fichier php comme un fichier js:

ob_start();
//all variables here
echo 'var someJson = '
    . json_enode($someArray);
$content = ob_get_clean();

header('Content-Type: text/javascript');
header('Content-Length: ' . strlen($content)); //or mb_strlen with utf8
echo $content;
exit;

Vous pouvez ajouter des en-têtes pour fournir la mise en cache avec etag (hashing / id), dernière modification ou expiration / pragma.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top