[设置]
DollEntity
,可以是自己的孩子。ChocolateEntity
,是DollEntity的孩子[问题]
我的DollEntity
就像一个俄罗斯娃娃,因此,一个娃娃可以包含另一个娃娃。
ChocolateEntity
将在第一个或第二个玩偶中。
我的问题是,我无法弄清楚如何使用两条不同的路线来获取巧克力。
src / AppBundle / Resources / config / doll.yml
doll_index:
path: /dolls/
defaults: { _controller: "AppBundle:Doll:index" }
methods: GET
doll_show:
path: /doll/{idDoll}/show/
defaults: { _controller: "AppBundle:Doll:show" }
methods: GET
doll_new:
path: /doll/new/
defaults: { _controller: "AppBundle:Doll:new" }
methods: [GET, POST]
doll_edit:
path: /doll/{idDoll}/edit/
defaults: { _controller: "AppBundle:Doll:edit" }
methods: [GET, POST]
doll_delete:
path: /doll/{idDoll}/delete/
defaults: { _controller: "AppBundle:Doll:delete" }
methods: DELETE
sub_doll_index:
path: /doll/{idDoll}/subDolls/
defaults: { _controller: "AppBundle:Doll:index" }
methods: GET
sub_doll_show:
path: /doll/{parent}/subDoll/{idDoll}/show/
defaults: { _controller: "AppBundle:Doll:show" }
methods: GET
sub_doll_new:
path: /doll/{idDoll}/subDoll/new/
defaults: { _controller: "AppBundle:Doll:new" }
methods: [GET, POST]
sub_doll_edit:
path: /doll/{parent}/subDoll/{idDoll}/edit/
defaults: { _controller: "AppBundle:Doll:edit" }
methods: [GET, POST]
sub_doll_delete:
path: /doll/{parent}/subDoll/{idDoll}/delete/
defaults: { _controller: "AppBundle:Doll:delete" }
methods: DELETE
#Problem start here
doll_chocolate:
resource: "@AppBundle/Resources/config/chocolate.yml"
prefix: /doll/{idDoll}/
sub_doll_chocolate:
resource: "@AppBundle/Resources/config/chocolate.yml"
prefix: /doll/{parent}/subDoll/{idDoll}/
sub_doll_chocolate
将有效,而doll_chocolate
将返回未找到路线错误。
通过测试,我发现我无法做到这一点
doll_chocolate:
resource: "@AppBundle/Resources/config/chocolate.yml"
prefix: /doll/{idDoll}/
prefix: /doll/{parent}/subDoll/{idDoll}/
我怎样才能使这两条路线起作用?
有没有办法为单个资源提供多个前缀?
答案 0 :(得分:1)
使用Symfony 4.1,您将能够拥有路由ID前缀。 https://github.com/symfony/symfony/issues/19612
意味着您可以执行以下操作:
sub_doll_chocolate:
idprefix: sub_doll_
resource: "@AppBundle/Resources/config/chocolate.yml"
prefix: /doll/{parent}/subDoll/{idDoll}/
注意:您可能已经使用FOSRest
答案 1 :(得分:-1)
我不太确定,但我不认为用' /'结束你的路线。是一个很好的做法。 symfony中的一般想法是它匹配它找到合适的第一条路线。所以你还应该检查一下其他路线是否在它到达doll_chocolate之前没有匹配(这就是在每个右边的末尾使用' /'符号的原因结果是问题)。我还建议您在前面放置较少的特定URL(以便doll_chocolate在doll_new之后正确,并且这两条路径都放在doll_index路径之后)您还应该检查您在浏览器中输入的URL是否实际上以' /',因为它不匹配路线