Como adicionar um diretório auxiliar de exibição (Zend Framework)
-
22-09-2019 - |
Pergunta
Começo com o ZF (1.9.7) e quero usar os ajudantes de uma biblioteca compartilhada entre todos os meus projetos. Mas não consigo encontrar como adicionar diretório de TI ao caminho dos ajudantes. Meu Herpers trabalha multas quando eu as coloco no caminho dos ajudantes do aplicativo.
Aqui está o erro, onde encontro o caminho para os ajudantes do ZF e o caminho para os aplicativos.
object(ArrayObject)#71 (3) {
["exception"]=>
object(Zend_Loader_PluginLoader_Exception)#70 (6) {
["message:protected"]=>
string(151) "Plugin by name 'Voo' was not found in the registry; used paths:
Zend_View_Helper_: Zend/View/Helper/;C:/ZendStd/www/applis/VOO4_PROJECTX/views\helpers/"
["string:private"]=>
string(0) ""
["code:protected"]=>
int(0)
["file:protected"]=>
string(89) "C:\Program Files\Zend\ZendServer\share\ZendFramework\library\Zend\Loader\PluginLoader.php"
["line:protected"]=>
int(401)
Atenciosamente
Cédric
Solução
Isso pode ser feito com muita facilidade com o recurso incorporado em zend_application para a visualização. Se você estiver usando as configurações ini, adicione uma linha como esta:
resources.view.helperPath.My_View_Helper = "My/View/Helper"
O final da chave é o prefixo do nome da classe e o valor do caminho onde eles residem.
Outras dicas
Caminhos auxiliares são adicionados através Zend_view_abstract :: addHelperPath (). Você pode chamar esse método diretamente em uma instância de visualização existente.
Os caminhos auxiliares também podem ser configurados de várias maneiras durante o bootstrap. Confira o capítulo manual do ZF em Zend_Application
Para ver como usar as classes e recursos do Bootstrap:
- http://framework.zend.com/manual/1.12/en/zend.view.helpers.html
- http://framework.zend.com/manual/1.12/en/zend.application.quick-start.html
- http://framework.zend.com/manual/1.12/en/zend.application.examples.html
- http://framework.zend.com/manual/1.12/en/zend.application.available-sources.html#zend.application.available-resources.view
Há um problema ao usar
resources.view.helperPath.App_View_Helper = APPLICATION_PATH "/../library/App/views/helpers"
Não posso acessar nenhum auxiliar de visualização no layout, mesmo os ajudantes locais no módulo. (O plug -in por nome 'loggedinas' não foi encontrado no registro), mas ainda trabalhando nos arquivos de modelo de visualizações.
Coloquei este código "ECHO ZEND_DEBUG :: dump ($ this)" no final do arquivo de layout e há uma parte da saída.
["_prefixToPaths:protected"] => array(3) {
["Zend_View_Helper_"] => array(2) {
[0] => string(17) "Zend/View/Helper/"
[1] => string(16) "./views\helpers/"
}
["ZendX_JQuery_View_Helper_"] => array(1) {
[0] => string(25) "ZendX/JQuery/View/Helper/"
}
["Zend_View_Helper_Navigation_"] => array(1) {
[0] => string(28) "Zend/View/Helper/Navigation/"
}
}
Mas ao usar esses código no arquivo bootstrap, não há problema.
//Initialize and/or retrieve a ViewRenderer object on demand via the helper broker
$viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer');
$viewRenderer->initView();
//add the global helper directory path
$viewRenderer->view->addHelperPath(APPLICATION_PATH.'/../library/App/views/helpers', 'App_View_Helper');
A saída foi como abaixo:
["_prefixToPaths:protected"] => array(4) {
["Zend_View_Helper_"] => array(3) {
[0] => string(17) "Zend/View/Helper/"
[1] => string(16) "./views\helpers/"
[2] => string(86) "D:/zf/application/modules/default/views\helpers/"
}
["App_View_Helper_"] => array(1) {
[0] => string(85) "D:\zf\application/../library/App/views/helpers/"
}
["ZendX_JQuery_View_Helper_"] => array(1) {
[0] => string(25) "ZendX/JQuery/View/Helper/"
}
["Zend_View_Helper_Navigation_"] => array(1) {
[0] => string(28) "Zend/View/Helper/Navigation/"
}
}
Editar: Confira Ver Helper in Zend Framework Para uma abordagem mais detalhada sobre esse problema, usando o Helper Loggedinas View de Rob Allen.
Você não só pode fazer o especificado por David Cunt, mas também pode fazer assim no seu bootstrap. Observe que sempre há mais de uma maneira de fazer qualquer coisa na estrutura Zend
Verificação de saída http://devzone.zend.com/article/3412
Se você tiver acesso ao objeto View, faça o seguinte.
<?php
$view->addHelperPath('My/View/Helper/', 'My_View_Helper');
?>
Pode ser necessário obter o objeto View se você em um plugin de controlador frontal
Confira também este ótimo conjunto de postagens começando aqui:
Escrevi um tutorial curto simples para registrar os ajudantes do Zend View de um diretório comum, que pode ser acessado durante todo o aplicativo. Por favor, dê uma olhada.
http://www.mixedwaves.com/2010/03/accessing-and-using-zend-view-helpers-froma-common-directory/