Search code examples
phpsymfonyroutescomposer-phpclassnotfoundexception

First "ClassNotFoundException" then "FileLoaderLoadException"


I am trying to create application in Symfony 2, to learn as much as I can, as beginner. First AppBundle which was created by default was easy. Second I created using create:bundle "ResultBundle", was a bit rough and I got "ClassNotFoundException" at first, but after some settings it worked again as expected. Armed with not so deserved confidence, I tried to create third bundle "ClinicBundle" and then everything fell apart. Although I created routing.yml for new bundle, and set it correctly in AppKernel.php (link goes right to new class ClinicBundle.php), and set app/config/routing.yml correctly (same as for previous ResultBundle) and added the bundle to composer.json autoload, same as in previous bundle, I kept getting "ClassNotFoundException" for this ClinicBundle, like it can't be loaded in AppKernel.php though when I point to link in that row:

new ClinicBundle\ClinicBundle()

It goes smoothly to the right file. Every advice I have found online was already done and set correctly. Everything was in place but "ClassNotFoundException" kept on and it just wasn't working. I tried clear:cache also but same error popped up even then. I checked everything and it was all in place. routing files, paths, composer autoload. AppKernel... Finally, I followed some ill advice from a forum and run some dump-autoload command which "generated autoload files" and everything after is much much worse. Now, I am getting long long FileLoaderLoadException error with many lines and main is this one:

Cannot load resource "@ClinicBundle/Resources/config/routing.yml". Make sure the "ClinicBundle/Resources/config/routing.yml" bundle is correctly registered and loaded in the application kernel class. If the bundle is registered, make sure the bundle path "@ClinicBundle/Resources/config/routing.yml" is not empty.

I have no idea what is wrong since bundle is registered in AppKernel and this routing file is not empty, it's like this:

clinic_homepage:
    path:     /clinic
    defaults: { _controller: ClinicBundle:Default:index }

app:
    resource: '@ClinicBundle/Controller/'
    type: annotation

The same structure as previous ResultBundle which worked before all this happened. Also, the ResultBundle does not work anymore too, if I put it on top of routing.yml file in app/config same error happens but for ResultBundle. This is how app/config/rounting.yml file looks like:

clinic:
    resource: "@ClinicBundle/Resources/config/routing.yml"
    type: annotation

result:
    resource: "@ResultBundle/Resources/config/routing.yml"
    type: annotation

app:
    resource: '@AppBundle/Controller/'
    type: annotation

What happened? Does anyone know what is missing here? How do you add new bundle so that it does not report "ClassNotFound"? Thanks!


Solution

  • Just without type: annotation

    clinic:
        prefix: /some-prefix
        resource: '@ClinicBundle/Resources/config/routing.yml'