Hoje em dia é muito utilizado automatizadores de tarefas para front-end como Grunt
, Gulp
e etc.
Geralmente é utilizado packages
para gerar builds
do CSS e JS como build/js/app-9783118bf8.js
Então esse modulo é para justamente recupear essa versão de build e adicionar na sua view
como:
VIEW.phtml:
<?php
echo $this->headScript()->prependFileBuild('js/app.js');
HTML:
<script type="text/javascript" src="/build/js/app-9783118bf8.js`"></script>
- Adicione no composer.json do seu projeto
"require" : {
"feliperamaral/zfheadbuild" : "1.*@stable"
}
- Rode o seguinte comando
$ php composer.phar update
- Adicione o modulo no seu
application.config.php
<?php
return array(
'modules' => array(
//...
'HeadBuild'
),
//...
);
Dessa forma não é preciso inicializar um modulo inteiro
- Adicione o seguinte helper no seu
[modulo]/config/module.config.php
<?php
return array(
//...
'view_helpers' => array(
//..
'invokables' => array(
//...
'headlink' => 'HeadBuild\View\Helper\HeadLink',
'headscript' => 'HeadBuild\View\Helper\HeadScript',
),
),
);
Você pode configurar manualmente os caminhos para a sua pasta de build
Duas variáveis estão incluídas no processo, que são: public_path
e manifest_file
O valor padrão de manifest_file
é build\rev-manifest.json
O valor padrão de public_path
é calculado automaticamente com base no seu index.php
(ou qualquer arquivo que o seu Rewrite
aponte)
No seu arquivo de configuração [modulo]/config/module.config.php
, adicione o seguinte:
<?php
return [
'headbuild' => [
'public_path' => 'caminho/para/meu/public/',
'manifest_file' => 'build-path\arquivo-json.json'
],
É adicionado dinâmicamente a versão ...Build([...])
à todos os métodos dos helpers HeadLink
e HeadScript
Na sua view:
VIEW.phtml:
<?php
echo $this->headLink()
->appendStylesheetBuild('css/app.css')
->appendStylesheetBuild($this->basePath('css/lib.css'));
echo $this->headScript()
->prependFileBuild('js/app.js')
->appendFile($this->basePath('js/lib.js'));
HTML:
<link href="/my-application/build/css/app-f7bf2c660c.css" media="screen" rel="stylesheet" type="text/css">
<link href="/my-application/css/lib.css" media="screen" rel="stylesheet" type="text/css">
<script type="text/javascript" src="/my-application/build/js/app-9783118bf8.js`"></script>
<script type="text/javascript" src="/my-application/js/lib.js"></script>
Todos os métodos possuem os mesmo parâmetros dos métodos equivalentes
$this->headScript()->appendFile([...]);
$this->headScript()->appendFileBuild([...]);
$this->headScript()->offsetSetFile([...]);
$this->headScript()->offsetSetFileBuild([...]);
$this->headScript()->prependFile([...]);
$this->headScript()->prependFileBuild([...]);
$this->headScript()->setFile([...]);
$this->headScript()->setFileBuild([...]);
$this->headScript()->appendScript([...]);
$this->headScript()->appendScriptBuild([...]);
$this->headScript()->offsetSetScript([...]);
$this->headScript()->offsetSetScriptBuild([...]);
$this->headScript()->prependScript([...]);
$this->headScript()->prependScriptBuild([...]);
$this->headLink()->appendStylesheet([...]);
$this->headLink()->appendStylesheetBuild([...]);
$this->headLink()->offsetSetStylesheet([...]);
$this->headLink()->offsetSetStylesheetBuild([...]);
$this->headLink()->prependStylesheet([...]);
$this->headLink()->prependStylesheetBuild([...]);
$this->headLink()->setStylesheet([...]);
$this->headLink()->setStylesheetBuild([...]);
$this->headLink()->appendAlternate([...]);
$this->headLink()->appendAlternateBuild([...]);
$this->headLink()->offsetSetAlternate([...]);
$this->headLink()->offsetSetAlternateBuild([...]);
$this->headLink()->prependAlternate([...]);
$this->headLink()->prependAlternateBuild([...]);
$this->headLink()->setAlternate([...]);
$this->headLink()->setAlternateBuild([...]);