symfony 如何使用正则表达式检查ramsey/uuid需求?

gj3fmq9x  于 2023-06-24  发布在  其他
关注(0)|答案(1)|浏览(102)

我在做symfony 5项目。
我使用ramsey/uuid。
我的教义yaml

dbal:
     types:
         uuid: Ramsey\Uuid\Doctrine\UuidType

我的控制器中的路线

/**
 * @Route(
 *     "/job/{id}",
 *     name="job_show",
 *     methods={"GET"}
 * )
 */

我想添加一些要求来验证“id”参数是否是uuid。
我尝试了几个正则表达式,但没有一个工作:
Regex尝试:

requirements={"id"="/^[a-f0-9]{8}\-[a-f0-9]{4}\-4[a-f0-9]{3}\-[a-f0-9]{4​}\-[a-f0-9]{12}$/"}
requirements={"id"="/^[a-f0-9\-]{36}$/"}

每当我遇到这个错误:
Not routine found for“GET /job/dc5a945c-25a1-4760-bd69-970d94560cce”
我看过几个类似的问题,如Searching for UUIDs in text with regex,但没有一个帮助我。
有谁知道我的错误可能来自哪里,或者如何做不同的事情?

jm81lzqq

jm81lzqq1#

您可以用途:

requirements={"id"="[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}"})

或者,从Symfony 6.1开始,您可以使用预定义的路由要求:

use Symfony\Component\Routing\Requirement\Requirement;

#[Route('/job/{id}',
    name: 'job_show',
    requirements: ['id' => Requirement::UUID_V6]
)]

查看Symfony博客上的功能介绍。

相关问题