{"id":217,"date":"2018-10-25T17:38:43","date_gmt":"2018-10-25T20:38:43","guid":{"rendered":"http:\/\/hackerzone.com.br\/blog\/?p=217"},"modified":"2022-08-13T00:20:11","modified_gmt":"2022-08-13T03:20:11","slug":"zend-framework-3-base-path-no-view-helper","status":"publish","type":"post","link":"http:\/\/hackerzone.com.br\/blog\/zend-framework-3-base-path-no-view-helper\/","title":{"rendered":"Zend framework 3 base path no View Helper"},"content":{"rendered":"<p>Se voc\u00ea esta querendo acessar a propriedade $this->bashPath no Zend ViewHelper n\u00e3o ir\u00e1 conseguir, voc\u00ea precisa passar o servi\u00e7o RendererInterface no construtor, segue o exemplo:<\/p>\n<p>Module.php<\/p>\n<pre class=\"brush: php; title: ; notranslate\" title=\"\">\r\npublic function getViewHelperConfig()\r\n    {\r\n        return [\r\n            'factories' =&gt; [\r\n                \\Module\\View\\Helper\\SuaClasse::class =&gt; \\Module\\View\\Factory\\SuaClasseFactory::class,\r\n            ],\r\n            'aliases' =&gt; [\r\n                'SuaClasse' =&gt; \\Module\\View\\Helper\\SuaClasse::class,\r\n            ],            \r\n        ];\r\n    }\r\n<\/pre>\n<p>SuaClasseFactory <\/p>\n<pre class=\"brush: php; title: ; notranslate\" title=\"\">\r\nnamespace Module\\View\\Factory;\r\n\r\nuse Interop\\Container\\ContainerInterface;\r\nuse Zend\\ServiceManager\\Factory\\FactoryInterface;\r\n\r\nuse Module\\View\\Helper\\SuaClasse;\r\n\r\nclass SuaClasseFactory implements FactoryInterface {\r\n          \r\n    public function __invoke(ContainerInterface $container, $requestedName, array $options = null) {\r\n        \r\n        \/\/Tamb\u00e9m estou passando o Doctrine... ignore\r\n        $em = $container-&gt;get('Doctrine\\ORM\\EntityManager');   \r\n\r\n        \/\/Aqui estou pegando o servi\u00e7o RendererInterface que cont\u00e9m o m\u00e9todo basePath\r\n        $rendererInterface = $container-&gt;get('Zend\\View\\Renderer\\RendererInterface');\r\n        \r\n        return new SuaClasse($em, $rendererInterface  );\r\n    }\r\n\r\n}\r\n<\/pre>\n<p>SuaClasse<\/p>\n<pre class=\"brush: php; title: ; notranslate\" title=\"\">\r\n&lt;?php\r\n\r\nnamespace Module\\View\\Helper;\r\n\r\nuse Zend\\View\\Helper\\AbstractHelper;\r\n\r\nclass SuaClasse extends AbstractHelper {\r\n\r\n    public $em = null;\r\n    protected $rendererInterface = null;    \r\n\r\n    public function setEm($em) {\r\n        if (is_null($this-&gt;em)) {\r\n            $this-&gt;em = $em;\r\n        }\r\n    }\r\n\r\n    private function getEm(): \\Doctrine\\ORM\\EntityManager {\r\n        return $this-&gt;em;\r\n    }\r\n\r\n    \/\/Recebo no construtor!\r\n    public function __construct(\\Doctrine\\ORM\\EntityManager $em, \\Zend\\View\\Renderer\\RendererInterface $rendererInterface) {\r\n        $this-&gt;setEm($em);\r\n\r\n        if (is_null($this-&gt;rendererInterface)) {\r\n            $this-&gt;rendererInterface = $rendererInterface;\r\n        }\r\n    }\r\n\r\n    public function umMetodoQualquer(){\r\n         ?&gt;\r\n          &lt;img src=&quot;&lt;?php echo $this-&gt;rendererInterface-&gt;basePath('caminho\/imagem.png'); ?&gt;&quot;\/&gt;&quot;\r\n         &lt;?php\r\n    }\r\n}\r\n?&gt;\r\n<\/pre>\n<p>Agora em seu view<\/p>\n<pre class=\"brush: php; title: ; notranslate\" title=\"\">\r\n&lt;?php echo $this-&gt;SuaClasse()-&gt;umMetodoQualquer(); ?&gt;\r\n<\/pre>\n<p>Estrutura:<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\nModule\r\n- src\r\n    View\r\n        - Factory\r\n            -&gt; SuaClasseFactory.php\r\n        - Helper\r\n            -&gt; SuaClasse.php\r\n    Module.php\r\n<\/pre>\n<p>Espero que possa ter ajudado.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Se voc\u00ea esta querendo acessar a propriedade $this->bashPath no Zend ViewHelper n\u00e3o ir\u00e1 conseguir, voc\u00ea precisa passar o servi\u00e7o RendererInterface no construtor, segue o exemplo: Module.php SuaClasseFactory SuaClasse Agora em seu view Estrutura: Espero que possa ter ajudado.<\/p>\n","protected":false},"author":1,"featured_media":459,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12,13],"tags":[15,20,18],"class_list":["post-217","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-php","category-zend-framework-3","tag-php","tag-zend","tag-zend-framework-3","cat-12-id","cat-13-id","has_thumb"],"_links":{"self":[{"href":"http:\/\/hackerzone.com.br\/blog\/wp-json\/wp\/v2\/posts\/217","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/hackerzone.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/hackerzone.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/hackerzone.com.br\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/hackerzone.com.br\/blog\/wp-json\/wp\/v2\/comments?post=217"}],"version-history":[{"count":6,"href":"http:\/\/hackerzone.com.br\/blog\/wp-json\/wp\/v2\/posts\/217\/revisions"}],"predecessor-version":[{"id":223,"href":"http:\/\/hackerzone.com.br\/blog\/wp-json\/wp\/v2\/posts\/217\/revisions\/223"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/hackerzone.com.br\/blog\/wp-json\/wp\/v2\/media\/459"}],"wp:attachment":[{"href":"http:\/\/hackerzone.com.br\/blog\/wp-json\/wp\/v2\/media?parent=217"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/hackerzone.com.br\/blog\/wp-json\/wp\/v2\/categories?post=217"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/hackerzone.com.br\/blog\/wp-json\/wp\/v2\/tags?post=217"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}