Pim-community-dev: Classe de proxy Doctrine não gerada após adicionar uma propriedade de categoria personalizada

Criado em 15 jun. 2017  ·  15Comentários  ·  Fonte: akeneo/pim-community-dev

Estou fazendo uma pergunta

Oi,

Segui o livro de

Tudo funciona bem no ambiente de desenvolvimento, mas depois de mudar para prod, estou enfrentando app/cache/prod/doctrine/orm/Proxies/__CG__PimBundleCatalogBundleEntityCategory.php): failed to open stream: No such file or directory .

Tentei aquecer manualmente o cache, mas isso só gera uma classe de proxy de doutrina para minha nova entidade de categoria personalizada que estende BaseCategory. A única solução que encontrei até agora é copiar esta classe de proxy para __CG__PimBundleCatalogBundleEntityCategory.php, o que provavelmente não é exatamente a melhor prática ;-)

Você poderia me dar uma dica do que estou perdendo?

Obrigado!

question

Comentários muito úteis

Olá @DavidFeller ,

Você pode tentar aquecer o cache de produção com o seguinte comando:
php app/console cache:warmup --env=prod --no-debug

Na maioria das vezes, ele corrige problemas de cache.

Cumprimentos

Todos 15 comentários

Olá @DavidFeller ,

Você pode tentar aquecer o cache de produção com o seguinte comando:
php app/console cache:warmup --env=prod --no-debug

Na maioria das vezes, ele corrige problemas de cache.

Cumprimentos

Olá @momoss ,

obrigado pela resposta rápida! :)

Infelizmente, já tentei várias vezes. Parece funcionar (sem saída de erro), mas __CG__PimBundleCatalogBundleEntityCategory.php ainda está faltando depois.
Além disso, verifiquei os mapeamentos de entidades por meio de php app/console doctrine:mapping:info .

Eu sei que isso é mais um problema de doutrina ou symfony do que realmente relacionado a akeneo, mas acho que estou perdendo alguns detalhes na configuração AcmeCatalogBundle em termos de sobrescrever a BaseCategory.

Ou você acha que é pior tentar fazer o downgrade do php para 5.6?

Olá @DavidFeller ,

Após uma discussão com @ damien-carcel, ele me avisou que estava faltando algo na documentação, nós a atualizamos ontem.

Você pode verificar seu Category class , talvez um método esteja faltando:

public function getTranslationFQCN() { return CategoryTranslation::class; }

Cumprimentos

Olá @momoss ,

Ah ok, vou verificar isso. Achei que esse método fosse necessário apenas para a segunda parte dos documentos (propriedades traduzíveis). Como eu apenas adicionei uma caixa de seleção, "ignorei" essa parte. ;-)

Acho que tentarei começar de novo e criar uma propriedade traduzível.

Obrigado pela sua ajuda e cumprimentos,
David

Eu tenho o mesmo problema com a versão 2.0 mais recente. Exatamente o mesmo problema e tenho seguido os mesmos documentos.

E eu adicionei o campo como traduzível. Ele é adicionado ao banco de dados, mas ainda não funciona no ambiente de produção.
Isso é o que eu obtive do próprio servidor de produções e encontrei o mesmo erro. "" Erro de compilação: require (): Falha ao abrir necessário '/opt/bitnami/apps/akeneo/htdocs/var/cache/prod/doctrine/orm/Proxies/__CG__PimBundleCatalogBundleEntityCategory.php'

Olá @Nebojsaa .

Lamento saber que este livro de receitas não funciona para você. Acabei de testá-lo totalmente de um pim-community-standard , ele funciona para mim, há apenas um erro no FormType em relação ao widget: a notação antiga não funciona mais com Symfony 3.4.

Você pode ver meu código nesta solicitação de pull https://github.com/damien-carcel/pim-community-standard/pull/1. O erro de que estou falando está no último commit. Vou atualizar a documentação o mais rápido possível.

Não segui totalmente o livro de receitas: tudo é colocado em AppBundle e todos os serviços e parâmetros declarados em services.yml . Eu também adicionei a dica de tipo do PHP 7.1. Mas isso não muda a validade do livro de receitas (exceto para o problema da área de texto, é claro).

Por favor, tente comparar seu código com o meu, você provavelmente se esqueceu de uma substituição de serviço / parâmetro.

Além disso, não se esqueça de que os exemplos de código no livro de receitas podem ser rolados. Eu perdi o setDescription método no CategoryTranslation classe em primeiro lugar.

Finalmente, não se esqueça de limpar seu cache (remova-o totalmente com rm -rf var/cache/* ), reinicie o FPM e somente então atualize seu esquema Doctrine.

Você também pode ter problemas de cache se o daemon de fila Akeneo (para importações / exportações) estiver em execução: ele impedirá que seu cache APC seja limpo e, em seguida, poluirá seu cache Symfony novamente. Se você estiver usando o daemon de fila, o procedimento correto é:

  • pare o demônio
  • rm -rf var/cache/*
  • reinicie o FPM
  • inicie o daemon novamente
  • atualize seu esquema do Doctrine

Aliás, por favor, não poste sobre questões fechadas, porque ninguém costuma responder / ver. Só vi seu comentário porque fui marcado na conversa e recebi uma notificação do GitHub sobre isso. Prefira abrir um novo fascículo e vincular o original.

Deixe-me saber se isso ajudou você.

Cumprimentos,
Damien

Hmmm, isso é estranho. Fiz tudo conforme sugerido, mas não consigo fazer funcionar. Também estou tentando adicionar a categoria sem tradução. Então eu acho que isso não me incomodou.

[2018-01-12 05:55:50] request.CRITICAL: Symfony \ Component \ Debug \ Exception \ FatalErrorException: "Erro de compilação: require (): Falha ao abrir necessário '/ opt / bitnami / apps / akeneo / htdocs / var / cache / prod / doctrine / orm / Proxies / __ CG__PimBundleCatalogBundleEntityCategory.php '(include_path ='.: / opt / bitnami / php / lib / php ') "em / opt / bitnami / apps / akeneo / htdocs / vendor /doctrine/common/lib/Doctrine/Common/Proxy/AbstractProxyFactory.php linha 209 {"exception": "[object] (Symfony \ Component \ Debug \ Exception \ FatalErrorException (código: 0): Erro de compilação: require (): Falha ao abrir necessário '/opt/bitnami/apps/akeneo/htdocs/var/cache/prod/doctrine/orm/Proxies/__CG__PimBundleCatalogBundleEntityCategory.php' (include_path = '.: / Opt / bitnami / php / lib / php') em /opt/bitnami/apps/akeneo/htdocs/vendor/doctrine/common/lib/Doctrine/Common/Proxy/AbstractProxyFactory.php:209) "} []

Cumprimentos,
Nebojsaa

pim_enrich.form.type.category.class está errado, você está usando Acme vez de seu pacote.

Tudo o resto está OK. Acabei de usar seu pacote com um pim-community-standard 2.0, remover o roteamento (é inútil) e configurar a substituição de entidade em app/config/config.yml . Consegui editar e salvar uma categoria com seus novos campos sem nenhum problema.
Também precisei desativar sua validação em seu campo, ou não consegui instalar os fixtures do icecat (você valida que seus campos não podem estar em branco, mas eles não existem nos meus fixtures 😉).

Eu realmente acho que o problema vem do seu servidor. E olhando para o erro em seu post anterior, parece claramente um problema de cache do PHP. Algo pode estar sendo executado no servidor bitnami que impede que o cache seja limpo quando você reinicia o FPM.

Cumprimentos,
Damien.

Ei Damien,
Tudo bem, eu nunca fui um administrador de sistemas na minha vida. Agora é a hora.

Talvez algumas dicas, exceto as de cima.
Você sabe onde posso parar e iniciar o daemon e reiniciar o fpm?
Estou usando o php 7.1.
Você sabe quais comandos devo usar?

Para reiniciar o FPM, vai depender do seu servidor. Qual distribuição Linux você está usando nele? A maioria deles agora usa systemd como init, então você deve ser capaz de reiniciar o FPM executando sudo systemctl restart php7.1-fpm (o nome do processo FPM pode mudar de um sistema para outro).

A fila é um processo simples de php que você pode iniciar manualmente ou usando um supervisor. Você pode encontrar instruções detalhadas aqui: https://docs.akeneo.com/latest/install_pim/manual/daemon_queue.html.

Hmm, conseguiram entretanto.
Agora está exibindo "Hello World!" - Meu index.html.twig padrão ??

Oh sim. Normal. Você usa o comando generate:bundle , certo?
Você precisa remover a visão Default/index.html.twig , o controlador e o roteamento de seu pacote (não se esqueça de removê-lo de app/config/routing.yml também). Eles são inúteis.
Então deve funcionar.

Próximo erro :-D
Não, eu só estou brincando ..
Muito obrigado.

bom dia, saudações a todos. Estou com um pequeno problema, estou trabalhando em um projeto com Symfony 4, tenho o banco de dados do meu projeto no postgressql, instalei este gerenciador e estabeleci uma conexão com ele com o referido framework, mas quando tento gerar as entidades dessa base de dados com o comando php bin / console doctrine: mapping : import "App \ Entity" annotation --path = src / Entity, me dá o seguinte erro:

Na linha 151 de ImportMappingDoctrineCommand.php:

Aviso: file_put_contents (src / Entity / "tsubtipoanestesia" .php): falha ao abrir o stream: Não existe esse arquivo ou diretório.

Gostaria de saber como resolver.
Obrigada.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

grabelle picture grabelle  ·  3Comentários

lpxavi picture lpxavi  ·  4Comentários

wakqasahmed picture wakqasahmed  ·  4Comentários

FabienSalles picture FabienSalles  ·  5Comentários

lpxavi picture lpxavi  ·  3Comentários