Symfony2.1 [Semantical Error] The class “Annotatio

2019-07-06 20:29发布

问题:

I try to upgrade a Symfony 2.0 application to 2.1, but i'm blocked ... :(

Here the error message when i try a new composer update (all my package/bundle are already up-to-date), or when i try to display a web page :

Loading composer repositories with package information
Updating dependencies                                     
Generating autoload files

  [Doctrine\Common\Annotations\AnnotationException]                                                                                                                                                                                                                                                                                                                                                              
  [Semantical Error] The class "Annotation" is not annotated with @Annotation. Are you sure this class can be used as annotation? If so, then you need to add @Annotation to the _class_ doc comment of "Annotation". If it is indeed no annotation, then you need to add @IgnoreAnnotation("Annotation") to the _class_ doc comment of class @Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter.  

Script Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::clearCache handling the post-update-cmd event terminated with an exception

  [RuntimeException]                                                         
  An error occurred when executing the "'cache:clear --no-warmup'" command.

We already use composer for Symfon2.0 app. The composer.json file :

"symfony/symfony":               "2.1.*@stable",
"doctrine/orm":                  "2.3.*@stable",
"doctrine/doctrine-bundle":      "1.0.*@stable",
"twig/extensions":               "1.0.*",
"symfony/assetic-bundle":        "2.1.*@stable",
"symfony/swiftmailer-bundle":    "2.1.*@stable",
"symfony/monolog-bundle":        "2.1.*@stable",
"sensio/distribution-bundle":    "2.1.*@stable",
"sensio/framework-extra-bundle": "2.1.*@stable",
"sensio/generator-bundle":       "2.1.*@stable",
"jms/security-extra-bundle":     "1.2.*@stable",
"jms/di-extra-bundle":           "1.1.*@stable",

"craue/twigextensions-bundle":       "dev-master",
"friendsofsymfony/rest-bundle":      "0.9.*@stable",
"friendsofsymfony/user-bundle":      "1.3.*@stable",
"genemu/form-bundle":                "2.1.x-dev",
"google/api-client":                 "0.5.0",
"knplabs/knp-menu-bundle":           "1.1.*@stable",
"knplabs/knp-paginator-bundle":      "2.2",
"leafo/lessphp":                     "0.3.*@stable",
"mopa/bootstrap-bundle":             "2.1.*",
"natxet/CssMin":                     "dev-master",
"stof/doctrine-extensions-bundle":   "1.1.x-dev",
"twitter/bootstrap":                 "2.0.4",

The use of ParamConverter annotation :

   /**
     * @ParamConverter("someEntity", class="VendorSomeBundle:SomeEntity", options={"entity_manager" = "someentitymanagername"})
     */

I copied/paste the web/app.php, app/autoload.php files from Symfony 2.1.

回答1:

With Symfony2.1, you don't need a ParamConverter annotation anymore. The following example will trigger a query and give you the entity you need.

   /**
    * @Route("/id/randomroute", name="random_route")
    */
    public function highconnexionAction(Entity $entity)

But I can't see why your annotation doesn't work...