Solucionado (ver solução)
Solucionado
(ver solução)
9
respostas

Erro a criar o módulo (2a aula)

Boa noite, estou tentando criar um módulo Produto no Zend (2a aula) fiz exatamente como descrito no vídeos, refiz várias vezes, até tentei com a versão 2.5, mas não obtive sucesso. Nem copiando e colando.

Fatal error: Method Zend\View\Helper\HeadTitle::__toString() must not throw an exception in /Volumes/www/Estoque/skeleton-application/module/Application/view/layout/layout.phtml on line 0

Por que o erro está ocorrendo?

9 respostas

Oi Luciano, tudo bom?

Esse problema parece ser bastante comum, aqui e aqui no proprio git do framework tem dois casos. Normalmente esse bug esta relacionado a feature de translator que precisa da extensão php-intl instalada no seu php.

Verifica no seu php.ini se essa extensão esta habilitada.

Abraço!

Olá tudo bem? Obrigadão por tentar resolver a minha dúvida. Fui ao php.ini e habilitei o php-intl, reiniciei o servidor e não houve nenhuma mudança. Seguindo os links que você passou fui ao ZendSkeletonApplication/module/Application/config/module.config.php e inseri o route

<?php
/**
 * @link      http://github.com/zendframework/ZendSkeletonApplication for the canonical source repository
 * @copyright Copyright (c) 2005-2016 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd New BSD License
 */
namespace Application;
use Zend\Router\Http\Literal;
use Zend\Router\Http\Segment;
use Zend\ServiceManager\Factory\InvokableFactory;
return [
    'router' => [
        'routes' => [
            'home' => [
                'type' => Literal::class,
                'options' => [
                    'route'    => '/',
                    'defaults' => [
                        'controller' => Controller\IndexController::class,
                        'action'     => 'index',
                    ],
                ],
            ],
            'application' => [
                'type'    => Segment::class,
                'options' => [
                    'route'    => '/application[/:action]',
                    'defaults' => [
                        'controller' => Controller\IndexController::class,
                        'action'     => 'index',
                    ],
                ],
            ],
        ],
    ],
    'controllers' => [
        'factories' => [
            Controller\IndexController::class => InvokableFactory::class,
        ],
    ],
    'view_manager' => [
        'display_not_found_reason' => true,
        'display_exceptions'       => true,
        'doctype'                  => 'HTML5',
        'not_found_template'       => 'error/404',
        'exception_template'       => 'error/index',
        'template_map' => [
            'layout/layout'           => __DIR__ . '/../view/layout/layout.phtml',
            'application/index/index' => __DIR__ . '/../view/application/index/index.phtml',
            'error/404'               => __DIR__ . '/../view/error/404.phtml',
            'error/index'             => __DIR__ . '/../view/error/index.phtml',
        ],
        'template_path_stack' => [
            __DIR__ . '/../view',
        ],
    ],
];

Acredite, ainda este erro aparece. Será que você tem mais alguma idéia ou outros colegas de como solucionar osproblema?

Luciano, tudo bem? Cara confesso que nunca mexi com esse framework, mas uma coisa me veio a cabeça aqui lendo oq vc e o André comentaram. O Php-intl precisa ser instalado, não basta só habilitar a extensão. Vc tá usando ql sistema operacional? Acredito que se for ubuntu por exemplo fica mais fácil, seria só um apt-get install

Olha esse post no stackoverflow

https://stackoverflow.com/questions/42243461/how-to-install-php-intl-extension-in-ubuntu-14-04

Na dúvida que o cara abriu fala que ele realmente precisa instalar essa o php-intl pro zend funcionar.

Tenta isso agora? Se não der certo me dá um toque de novo aqui que vou tentar te ajudar.

Abraço!

Olá Yuri tudo bem? Uso o MacOSX Sierra, mas tentei em um pc com Linux Ubuntu e teve o mesmo erro.

Muito obrigado pela resposta, mas estou perdendo a paciência com o curso específico e de certo modo tratando com uma propaganda enganosa. Solicito a Alura o código fonte, do exercício.

Tudo bem Luciano ?

Você pode gerar um zip com seu código e subir em algum lugar e postar o link aqui pra gente conseguir testar e tentar reproduzir o problema?

Enquanto isso estou tentanto reproduzir seu problema aqui, ou fazer o projeto e te avisar o passo a passo que deixou tudo funcionando.

Um abraço.

Lucas muito obrigado :) Segue abaixo o link:

https://drive.google.com/file/d/0B-9lqi0-UeXsby1NZ1l3bFhDYXc/view?usp=sharing

solução!

Tudo bem Luciano? Desculpa a demora.

Eu vi que o Zend Framework 3 é compatível com o 2, de uma forma geral.

Apesar disso, recomendo você fazer na versão 2, assim fica próximo a versão usada no curso. Daí depois pode até tentar usar a versão 3.

Antes, tem que ter o git, php e php-mysql instalados. No Ubuntu seria esse comando:

$ sudo apt-get -y install git php php-mysql

O ZendSkeletonApplication por padrão irá usar a versão 3. Então você pode usar a versão 2 baixando o .zip direto:

https://github.com/zendframework/ZendSkeletonApplication/archive/release-2.4.11.zip

Extraia o .zip em algum lugar de sua preferência. E acesse o diretório:

$ cd ZendSkeletonApplication-release-2.4.11

Além disso, será necessário o composer. Recomendo fazer o seguinte:

$ curl -sS https://getcomposer.org/installer | php

Isso vai baixar o composer.phar no diretório atual (que nesse caso deve ser o diretório do projeto ZendSkeletonApplication). rode um composer install dentro da pasta do projeto:

$ php composer.phar install

Uma vez que o processo esteja concluído, é hora de adicionar o zftool:

$ php composer.phar require zendframework/zftool:dev-master

E depois para ver os módulos:

./vendor/bin/zf.php modules

Depois é só criar o módulo de estoque:

./vendor/bin/zf.php create module Estoque

Coloquei os códigos das aulas 1 e 2 aqui:

https://github.com/alura-cursos/zend-framework-2-parte-1

Caso deseje utilizar, é só baixar o composer dentro da pasta do projeto (da aula 1 ou 2) e rodar um install. Exemplo:

$ cd aula1/ZendSkeletonApplication

$ curl -sS https://getcomposer.org/installer | php

$ php composer.phar install

Por fim, para iniciar o servidor (nos dois casos):

$ php -S 0.0.0.0:8080 -t public/ public/index.php

Faz sentido? Tenta aí e vê se dá certo? Qualquer dúvida é só avisar.

Aguardo retorno, abraço!

Lucas e pessoal da Alura, muito obrigado. Finalmente funcionou! :)

Provavelmente foi problema de versão do Zend Framework. Baixei e testei algumas versões anteriores e não deram certo, mas a do link https://github.com/zendframework/ZendSkeletonApplication/archive/release-2.4.11.zip FUNCIONA!

Desculpem caso eu tenha me revoltado um pouco nos comentários.

Seria talvez interessante na primeira aula ter o comentário sobre a versão do Zend e o link da versão 2.4.11.

Abraço.

Oi Luciano!

Fico muito feliz que tenha funcionado! Qualquer problema é só abrir um novo tópico no fórum.

Sobre os passos pra baixar o skeleton com o Zend 2.4, adicionei lá no exercício do curso. :)

Um abraço e bons estudos!