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="/js/bootstrap/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="/js/example.js"></script><script src="/js/bootstrap/bootstrap.5.2.js"></script>
And your can clear the entire container:
$this->inlineScript()->deleteContainer();
See also:
https://docs.laminas.dev/laminas-view/helpers/placeholder/
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.