Zend Framework 2/3 Head*Build Module
Como funciona:
Hoje em dia é muito utilizado automatizadores de tarefas para front-end como Grunt, Gulp e etc., (*1)
Geralmente é utilizado packages para gerar builds do CSS e JS como build/js/app-9783118bf8.js, (*2)
Então esse modulo é para justamente recupear essa versão de build e adicionar na sua view como:, (*3)
VIEW.phtml:, (*4)
<?php
echo $this->headScript()->prependFileBuild('js/app.js');
HTML:, (*5)
Instalação
- Adicione no composer.json do seu projeto
"require" : {
"feliperamaral/zfheadbuild" : "1.*@stable"
}
- Rode o seguinte comando
$ php composer.phar update
Após a instalação
Opção 1 - Instalar como modulo
- Adicione o modulo no seu
application.config.php
<?php
return array(
'modules' => array(
//...
'HeadBuild'
),
//...
);
Opção 2 - Adicione diretamente no seu modulo (recomendado)
Dessa forma não é preciso inicializar um modulo inteiro, (*6)
- 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',
),
),
);
Configurações
Você pode configurar manualmente os caminhos para a sua pasta de build, (*7)
Duas variáveis estão incluídas no processo, que são: public_path e manifest_file, (*8)
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), (*9)
Alterar configurações padrão
No seu arquivo de configuração [modulo]/config/module.config.php, adicione o seguinte:, (*10)
<?php
return [
'headbuild' => [
'public_path' => 'caminho/para/meu/public/',
'manifest_file' => 'build-path\arquivo-json.json'
],
Como usar
É adicionado dinâmicamente a versão ...Build([...]) à todos os métodos dos helpers HeadLink e HeadScript, (*11)
Na sua view:, (*12)
VIEW.phtml:, (*13)
<?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:, (*14)
<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">
Observe que não é preciso usar o $this->basePath(...) no método de build
Observe também que os outros métodos continuam funcionando normalmente
Todos os métodos possuem os mesmo parâmetros dos métodos equivalentes, (*15)
Métodos HeadScript
$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([...]);
Métodos HeadLink
$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([...]);
```, (*16)