In a previous blog post, I was extolling the virtues of the wp_localize_script
function in WordPress as a way to pass PHP values to Javascript. It turns out that Joomla offers similar functionality.
Using a language constant to store the value, create a global Javascript array in PHP using the following syntax:
JText::script('LANGUAGE_CONSTANT');
Then, in your Javascript, you can reference that value using the following syntax:
Joomla.JText._('LANGUAGE_CONSTANT');
UPDATE: For situations beyond language strings, Joomla 3.7 introduced “optionsStorage”. I use this capability in my Petfinder module for Joomla. The PHP looks like this:
$doc = JFactory::getDocument(); | |
// get existing options, if any | |
$modpfOptions = $doc->getScriptOptions( 'mod_petfinder' ); | |
// set a variable for the stored value of rotation_degree | |
$rotationDegree = $this->params->get( 'rotation_degree' ); | |
// add to the options array | |
$modpfOptions['polaroid'] = array( 'degree' => $rotationDegree ); | |
// add the array to the JSON object that Joomla creates | |
$doc->addScriptOptions( 'mod_petfinder', $modpfOptions ); |
On the Javascript side, I get the value of rotation degree with the following:
var modpfOptions = Joomla.getOptions( 'mod_petfinder' ); | |
var rotationDegree = modpfOptions.polaroid.degree; |