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

erro nas rotas

boa tarde, estou enfrentando algum problema no symfony que não sei se acabei baixando uma versão diferente dos pacotes necessários ou se algum deles não foi baixado, como tentei encontrar o erro os erros foram mudando, o erro atual é esse:

Unrecognized options "dir_name, namespace" under "doctrine_migrations". Available options are "all_or_nothing", "check_database_platform", "connection", "custom_template", "em", "factories", "migrations", "migrations_paths", "organize_migrations", "services", "storage".

como não sei onde pode estar o erro criei um repositório no github pra facilitar:

https://github.com/marvinoliveiras/erro-symfony

Não sei como alguém em sã consciência pode dizer que é mais fácil desenvolver usando bibliotecas e frameworks. Quando algo não dá certo não sei por onde começar e quanto mais se meche mais fede hahahah. Possivelmente esse erro já não tem nada haver com o erro inicial.

18 respostas

Você tá usando "doctrine/doctrine-migrations-bundle": "^3.0",

A versão 3 sofreu diversas mudanças.

https://github.com/doctrine/DoctrineMigrationsBundle/issues/301

Segundo esse issue você pode remover esse bundle e tudo deve funcionar.

obrigado pela ajuda Vinícius, após executar os passsos um novo erro apareceu:

The autoloader expected class "App\Migrations\Version20190214193611" to be defined in file "C:\curso php\Symfony\consultorio-alura2\vendor\composer/../../src\Migrations\Version20190214193611.php". The file was found but the class was not in it, the class name or namespace probably has a typo in C:\curso php\Symfony\consultorio-alura2\config/services.yaml (which is loaded in resource "C:\curso php\Symfony\consultorio-alura2\config/services.yaml").

Putz, erro meu. Não me lembrava que a gente usava migrations nesse treinamento. haha

Faz um

composer require doctrine/doctrine-migrations-bundle "^2.0"

Vê se isso resolve

esse comando gerou esse erro:

./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Restricting packages listed in "symfony/symfony" to "4.2.*"
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - Conclusion: don't install doctrine/doctrine-migrations-bundle 2.2.0
    - Conclusion: don't install doctrine/doctrine-migrations-bundle 2.1.2
    - Conclusion: don't install doctrine/doctrine-migrations-bundle 2.1.1
    - Conclusion: don't install doctrine/doctrine-migrations-bundle 2.1.0
    - Conclusion: remove doctrine/migrations 3.0.1
    - Installation request for doctrine/doctrine-migrations-bundle ^2.0 -> satisfiable by doctrine/doctrine-migrations-bundle[2.1.0, 2.1.1, 2.1.2, 2.2.0, v2.0.0].
    - Conclusion: don't install doctrine/migrations 3.0.1
    - doctrine/doctrine-migrations-bundle v2.0.0 requires doctrine/migrations ^2.0 -> satisfiable by doctrine/migrations[2.1.1, 2.1.2, 2.2.0, 2.2.1, v2.0.0, v2.0.1, v2.0.2, v2.0.3, v2.1.0].
    - Can only install one of: doctrine/migrations[2.1.1, 3.0.1].
    - Can only install one of: doctrine/migrations[2.1.2, 3.0.1].
    - Can only install one of: doctrine/migrations[2.2.0, 3.0.1].
    - Can only install one of: doctrine/migrations[2.2.1, 3.0.1].
    - Can only install one of: doctrine/migrations[v2.0.0, 3.0.1].
    - Can only install one of: doctrine/migrations[v2.0.1, 3.0.1].
    - Can only install one of: doctrine/migrations[v2.0.2, 3.0.1].
    - Can only install one of: doctrine/migrations[v2.0.3, 3.0.1].
    - Can only install one of: doctrine/migrations[v2.1.0, 3.0.1].
    - Installation request for doctrine/migrations (locked at 3.0.1) -> satisfiable by doctrine/migrations[3.0.1].

Installation failed, reverting ./composer.json to its original content.
solução!

Beleza, vamos por partes.

Baixei seu projeto do GitHub e rodei composer install. Deu aquele erro que você já mencionou:

The autoloader expected class "App\Migrations\Version20190214193611" to be defined in file...

Então eu abri o arquivo citado no erro e vi que havia uma alteração no namespace das Migrations. Corrigi o namespace e o comando funcionou normalmente. :-)

então, estava dando erro aparentemente no namespace que não encontrava as migrations então eu alterei mas como não resolveu depois comentei a linha, agora já apaguei e deixei:

namespace App\Migrations;

O erro que segue é esse:

Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - Installation request for doctrine/doctrine-migrations-bundle 2.0 -> satisfiable by doctrine/doctrine-migrations-bundle[v2.0.0].
    - Conclusion: remove doctrine/migrations 3.0.1
    - Conclusion: don't install doctrine/migrations 3.0.1
    - doctrine/doctrine-migrations-bundle v2.0.0 requires doctrine/migrations ^2.0 -> satisfiable by doctrine/migrations[2.1.1, 2.1.2, 2.2.0, 2.2.1, v2.0.0, v2.0.1, v2.0.2, v2.0.3, v2.1.0].
    - Can only install one of: doctrine/migrations[2.1.1, 3.0.1].
    - Can only install one of: doctrine/migrations[2.1.2, 3.0.1].
    - Can only install one of: doctrine/migrations[2.2.0, 3.0.1].
    - Can only install one of: doctrine/migrations[2.2.1, 3.0.1].
    - Can only install one of: doctrine/migrations[v2.0.0, 3.0.1].
    - Can only install one of: doctrine/migrations[v2.0.1, 3.0.1].
    - Can only install one of: doctrine/migrations[v2.0.2, 3.0.1].
    - Can only install one of: doctrine/migrations[v2.0.3, 3.0.1].
    - Can only install one of: doctrine/migrations[v2.1.0, 3.0.1].
    - Installation request for doctrine/migrations (locked at 3.0.1) -> satisfiable by doctrine/migrations[3.0.1].


Installation failed, reverting ./composer.json to its original content.

Agora você pode voltar a usar as migrations na versão 3. Aparentemente não tem erro mais. Só fazer de novo o composer require migrations que tudo deve dar certo.

sqn hahhaha acho que esse era o erro inicial antes que fosse fuçando:

Using version ^3.0 for doctrine/doctrine-migrations-bundle
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Restricting packages listed in "symfony/symfony" to "4.2.*"
Nothing to install or update
Generating autoload files
ocramius/package-versions: Generating version class...
ocramius/package-versions: ...done generating version class
Executing script cache:clear [KO]
 [KO]
Script cache:clear returned with error code 1
!!
!!  In FileLoader.php line 166:
!!  

!!    The autoloader expected class "App\Migrations\Version20190214193611" to be defined in file "C:\curso php\Symfony\consultorio-alura2\vendor\composer/../../src\Migrations\Version20190214193611.php". The file
!!    was found but the class was not in it, the class name or namespace probably has a typo in C:\cur
!!    so php\Symfony\consultorio-alura2\config/services.yaml (which is loaded in resource "C:\curso ph
!!    p\Symfony\consultorio-alura2\config/services.yaml").

!!  

!!
!!  In DebugClassLoader.php line 217:
!!  

!!    The autoloader expected class "App\Migrations\Version20190214193611" to be defined in file "C:\c
!!    urso php\Symfony\consultorio-alura2\vendor\composer/../../src\Migrations\Version20190214193611.php". The file
!!    was found but the class was not in it, the class name or namespace probably has a typo.
!!  
!!
!!
Script @auto-scripts was called via post-update-cmd

Installation failed, reverting ./composer.json to its original content.

Esse erro original era resolvido corrigindo o namespace. Como eu disse, eu baixei o projeto do seu github, corrigi o namespace, instalei os pacotes (incluindo migrations) e tudo rodou.

Faz o reset do seu repo local e realiza esses passos pra ver se vai.

então Vinícius, o erro era de fato no namespace, porém no próprio repositório do curso estava errado, estava assim:

namespace DoctrineMigrations;

apesar de dizer na resposta anterior que eu havia mudado para

App\Migrations;

na verdade eu tinha voltado ao normal que era o do exemplo, dá uma olhada no repositório do curso.

Agora que esse erro foi corrigido, quando faço uma requisição com todos os registros de médicos tenho uma resposta:

Response size too large
You can send and download the response, or modify the
maximum response size in your Settings.

Mas não tenho tantos registros assim para ser grande demais.

Marcos, se n ão me engano essa mensagem é do Postman, não do PHP. Não sei como estão suas configurações...

exato, é do Postman. Verifiquei aqui no navegador e entendi o porque dele dizer que a resposta é grande demais, e ao acessar localhos:8080/medicos o sistema entrava em loop ou gerava um log muito grande. Fui ver na classe BaseController.php e vi que havia deixado um var_dump() na variável lista que era a lista de médicos, pra ver por que estava retornando null ontem, e esse var_dump é que estava gerando esse erro, ou o objeto lista é que é grande demais.

O objeto devia ser uma instância do Proxy do Doctrine, aí tem referência circular, enfim... rsrsrs

Que bom que achou o erro. Então tudo resolvido agora?

Se sim, quero comentar sobre isso:

Não sei como alguém em sã consciência pode dizer que é mais fácil desenvolver usando bibliotecas e frameworks.

O que acontece: Os frameworks evoluem e iniciar um projeto com uma versão mais antiga normalmente é meio trabalhoso sim, mas via de regra, quando a gente já conhece a ferramenta e consegue seguir o passo a passo recomendado da documentação, essas dores de cabeça não rolam. O propósito do framework é resolver problemas que você saberia resolver sem ele, mas ele já te dá a solução pronta. Assim você pode focar no seu negócio e não em criar rotas, configurar autenticação, escrever SQLs simples, etc.

:-D

Com o tempo a gente aprende a distinguir quando faz sentido usar frameworks e quando não faz, mas pra isso a gente precisa saber usá-los, né!? hahaha

Bons estudos e se o problema tiver sido resolvido, não esquece de marcar o tópico como solucionado. :-)

A minha questão com os frameworks é que as coisas acontecem por baixo dos panos e acabo não entendendo de onde veem os problemas, e quando estou programando em PHP puro sei exatamente onde eu mexi que causou o erro. Mas vou me forçar a usar e aprender esses frameworks como o Laravel e Doctrine, tenho visto que muitas vagas de emprego exigem ou consideram positivos o conhecimento deles.

Mas então o problema não está no framework, está no fato de você não saber fazer sem o framework.

Porque se você sabe resolver um problema sem o framework e o framework resolve pra você, você vai ser capaz de resolver algum problema que aconteça. Com o tempo, experiência e estudo você vai cominar os conceitos e o framework vai ser uma mera ferramenta.

Eu comento um pouco sobre isso aqui: https://dev.to/phprio/principios-ou-ferramentas-o-que-estudar-1364

Mas independente disso, o problema foi resolvido, Marcos?

Não se esquece de marcar o tópico como solucionado. :-D

cara você não dorme? grava curso, escreve artigo, dá palestra, grava pra o Youtube hahaha.Vou ler o artigo. Tenho feito alguns pequenos projetos para praticar os conceitos, estou no meio de um bem pequeno que assim que terminar vou subir no github, se você puder dar uma olha eu agradeço.

obrigado pela ajuda.

Hahahah

Infelizmente já não escrevo artigos há algum tempo, justamente por essa necessidade mortal que ainda tenho de dormir. Haushaush

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software