Can headscript view helper data be re-initialized?

Hi, I wanted to know if there is a possibility to reset the data again for the $view->headScript(). The reason for asking is that I want to use a new version of Javascript in the layout. But I can’t do that for the whole site only as that particular version is required on some pages.

// Current scenario
$this->headScript()->prependScript('/js/bootstrap/bootstrap.4.0.js');

//But I want to use the Bootstrap 5 version on some pages.
$this->headScript()->prependScript('/js/bootstrap/bootstrap.5.2.js'); 

Thanks!

There are different ways to do this, depending on whether you include multiple scripts or not.

Overwriting everything:

/**
 * @var Laminas\View\Renderer\PhpRenderer $this
 */

$this->inlineScript()->prependFile('/js/example.js');
$this->inlineScript()->prependFile('/js/bootstrap/bootstrap.4.0.js');
$this->inlineScript()->setFile('/js/bootstrap/bootstrap.5.2.js');
echo $this->inlineScript();

Output:

<script  src="&#x2F;js&#x2F;bootstrap&#x2F;bootstrap.5.2.js"></script>

Or an explicit script:

/**
 * @var Laminas\View\Renderer\PhpRenderer $this
 */

$this->inlineScript()->prependFile('/js/example.js');
$this->inlineScript()->offsetSetFile('bootstrap', '/js/bootstrap/bootstrap.4.0.js');
$this->inlineScript()->offsetSetFile('bootstrap', '/js/bootstrap/bootstrap.5.2.js');
echo $this->inlineScript();

Output:

<script  src="&#x2F;js&#x2F;example.js"></script><script  src="&#x2F;js&#x2F;bootstrap&#x2F;bootstrap.5.2.js"></script>

And your can clear the entire container:

$this->inlineScript()->deleteContainer();

See also:


The view helper InlineScript is used here as recommended in the Bootstrap documentation:

…and the <script> tag for our JavaScript bundle (including Popper for positioning dropdowns, poppers, and tooltips) before the closing </body> .

Thanks for the answer @froschdesign. Your answer has given me a new way to look at things. I only thought view helpers are extended from AbstractViewHelper. Placeholder examples and looking into headscript code will help me create an extendable sidebar I hope. Have to try the placeholder viewhelper.