0

So, I'm trying to connect my xml input to Javascript file through php(optional). I have to concatenate the xml input with all the h1 tags of my site. I'm trying to avoid inline javascript.

This is my php snippet for loading the js file.

$this->app->getDocument()->getWebAssetManager()->registerAndUseScript('plg_system_headings', 'media/plg_system_headings/js/index.js', [], ['defer' => true]);

And this is my xml snippet:

<files>
        <filename plugin="headings">headings.php</filename>
    </files>
    <media folder="media" destination="plg_system_headings">
        <!--<folder>css</folder>-->
        <folder>js</folder> 
    </media>
    <languages>
        <language tag="en-GB">language/en-GB.plg_system_headings.ini</language>
    </languages>
    <config>
        <fields name="params">
          
            <fieldset name="basic">
                <field
                    name="text_input"
                    type="text"
                    label="HEADINGS_TEXT_VS"
                    default="Greetings!!"
                />
            </fieldset>
          
        </fields>
    </config>

now I want the variable $this->params->get('text_input') to get passed in the js file. I tried writing it this way but it's not able to access this variable.

 window.onload = () => {
    // Display the alert
    let h1 = document.getElementsByTagName('h1')[0];
    h1.innerHTML= h1.concat(" . $this->params->get('text_input') . ");
}
  • .js files aren't processed by PHP. To get the XML data, you can either a) echo it into an inline script: `` then simply access `xml` in your main script or b) use fetch() to load the file from the server –  Apr 02 '22 at 08:13
  • 2
    Duplicate: [How do I pass variables and data from PHP to JavaScript?](https://stackoverflow.com/questions/23740548/how-do-i-pass-variables-and-data-from-php-to-javascript) –  Apr 02 '22 at 08:15
  • @ChrisG echo it where exactly? – user16347260 Apr 02 '22 at 08:53
  • `$this->app->getDocument()->getWebAssetManager()->addInlineScript(" let h1 = document.getElementsByTagName('h1')[0]; h1.innerHTML= h1 + ". $this->params->get('text_input') . "; ");` can I use this? – user16347260 Apr 02 '22 at 08:56
  • This is joomla! apparently, I have no idea how that works. –  Apr 02 '22 at 13:33

0 Answers0