The RdnRequireJS ZF2 module integrates the RequireJS library into your project.
-
Use
composer
to require theradnan/rdn-require-js
package:$ composer require radnan/rdn-require-js:1.*
-
Activate the module by including it in your
application.config.php
file:<?php return array( 'modules' => array( 'RdnRequireJS', // ... ), );
Create your RequireJS modules in your project's public/
directory:
// public/Bar.js
define(['./Foo'], function(Foo)
{
Foo.log('Hello World!');
});
Then, in your view templates, call the requireJS($name)
view helper with the module name as the argument:
/** @var Zend\View\Renderer\PhpRenderer $this */
<?php $this->requireJS('Bar') ?>
The view helper will include the RequireJS library along with the requested modules as inline scripts.
You can call the view helper multiple times and it will keep appending the module dependencies. You can also provide an array to include multiple deps at a time:
/** @var Zend\View\Renderer\PhpRenderer $this */
<?php $this->requireJS(['Bar', 'Baz']) ?>
If you'd like to have code completion for this helper, include the following in your PhpRenderer
class:
namespace App\View\Renderer;
use Zend\View\Renderer\PhpRenderer as ZendPhpRenderer;
/**
* @method requireJS(\string $dependencies = array())
*/
class PhpRenderer extends ZendPhpRenderer
{
}
Then, simply type hint the $this
variable to this class in your view templates.
The RequireJS library is, by default, included from cdnjs. You can configure this using the rdn_require_js.library
option:
<?php
return array(
'rdn_require_js' => array(
'library' => '/path/to/local/require.js',
),
);
This path should be relative to your project's base path. The view helper will use the basePath()
view helper to resolve the full path.
You can manage the default requireJS configuration using the rdn_require_js.config
option:
<?php
return array(
'rdn_require_js' => array(
'config' => array(
'baseUrl' => '/modules',
'paths' => array(
'App' => 'app/js',
),
'packages' => array(
'App',
),
),
),
);