site.com/{username}在尝试匹配 url 的 likesite.com/photos和后,我想在末尾有一个带通配符的url site.com/blog。我正在使用注释并有两个控制器。
我在这里找到了答案使用注释对路线进行排序
但是文件夹结构在第 4 版中有所不同,并且在我使用注释时他们使用的是 YAML,所以我不完全明白该放什么。
视频控制器
/**
* @Route("/videos", name="videos")
*/
public function index()
{
// Show video homepage
}
Run Code Online (Sandbox Code Playgroud)
用户控制器
/**
* @Route("/{username}", name="profile")
*/
public function index()
{
// Hello {username} !
}
Run Code Online (Sandbox Code Playgroud)
按照这个顺序,site.com/videos到达用户控制器而不是视频。我是否必须切换到手动将所有URL 结构置于 yaml 格式中,或者有没有办法在注释中设置优先级?
到目前为止,我发现的唯一方法是创建一个以字母“Z”开头的控制器,并将动作/路线放在那里,这似乎是最后运行路线。
您链接的问题实际上非常相关。你和另一个人问的一样:
但是,如果您将路由定义为控制器中的注释,您怎么能做到这一点呢?在这种情况下,有没有办法指定这条路线的顺序?
在 Symfony 4 中,你config/routes.yaml可能是空的,config/routes/annotations.yaml可能是这样的:
controllers:
resource: ../../src/Controller/
type: annotation
Run Code Online (Sandbox Code Playgroud)
你可以用这个替换上面的 YAML——注意顺序很重要:
Video:
resource: App\Controller\VideoController
type: annotation
User:
resource: App\Controller\UserController
type: annotation
Run Code Online (Sandbox Code Playgroud)
然后首先site.com/videos到达视频控制器。
| 归档时间: |
|
| 查看次数: |
3323 次 |
| 最近记录: |