php - Symfony : why am I not allowed to combine "type" with "defaults" in routing.yml -
short version of question : symfony's error message explains cannot use type key in conjunction defaults, can use resources (see details below). why ? how can fix ?
detailed version :
here exact sequence of did in symfony :
composer create-project symfony/framework-standard-edition sym-book/ '~2.5' php app/console generate:bundle --namespace=middleman/bookbundle --format=yml edit contents of src/middleman/bookbundle/resources/config/routing.yml to
middle_man_book_example: path: /example defaults: { _controller: middlemanbookbundle:lucky:number } type: annotation in directory src/middleman/bookbundle/controller, rename defaultcontroller.php luckycontroller.php, , edit contents to
namespace middleman\bookbundle\controller; class luckycontroller { /** * @route("/lucky/number") */ public function numberaction() { $number = rand(0, 100); return new response( '<html><body>lucky number: '.$number.'</body></html>' ); } } type localhost:8000/example/lucky/number in browser.
the error message follows :
the "type" key route definition "middle_man_book_example" in "/users/ewandelanoy/documents/math_software/symfony_stuff/sym-book/src/middleman/bookbundle/resources/config/routing.yml" unsupported. available imports in combination "resource" key in /users/ewandelanoy/documents/math_software/symfony_stuff/sym-book/src/middleman/bookbundle/resources/config/routing.yml ( being imported "/users/ewandelanoy/documents/math_software/symfony_stuff/sym-book/app/config/routing.yml")
if using type: annotation don't need, and, actually, must not, store defaults section in routing.yml. defaults section configured each route in own annotation, route annotation like:
/** * sample route * @route("/{id}", name="sample-route-name", defaults={"id" = 1}) * //defaults section there provide default values * * @method({"get", "post"}) // not needed, default - */ and yml routing configuration like:
sample_bundle_routing: resource: "@yourbundle/controller/" type: annotation prefix: /some_prefix/ upd yml config should put in main routing.yml. use variant. in main routing.yml put this:
sample_bundle_routing: resource: "@yourbundle/resources/config/routing.yml" then in routing.yml put in main routing.yml resource can write:
sample_bundle_routing: resource: "@yourbundle/controller/" type: annotation prefix: /some_prefix/ i have question: why need use both yml , annotation routing config? mean write in comment below: "but need edit routing.yml file in directory also, give controller name , action method name.". if use annotation routing type - there no need configuration annotation routing in yml. mean: routing either annotations each action or strings in bundle/main routing.yml, not both @ same time! if use annotation routing, thing need put in yml - routing config (in example "@yourbundle/controller/" path).
Comments
Post a Comment