gpt4 book ai didi

symfony - 在 Symfony 中为 @Route 注释创建自定义需求验证器

转载 作者:行者123 更新时间:2023-12-04 08:48:46 24 4
gpt4 key购买 nike

正如你在下面看到的,我的 @Route->requirements下面的正则表达式(我在许多其他 Controller /方法中使用它)有点长,看起来不太好,而且 最重要的是将来在语法更新的情况下可能很难维护,所以问题是,我们是否能够执行以下操作?

我看过很多类似的问题和教程来创建自定义注释,但不是这样的问题。

当前

/**
* @param string $id
*
* @Method({"GET"})
* @Route("/class/{id}", requirements={"id"="([0-9a-fA-F]){8}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){12}"})
* @Secure(roles="ROLE_ADMIN")
*
* @return Response
*/
public function getClassAction($id)

也许是这样的
/**
* @param string $id
*
* @Method({"GET"})
* @Route("/class/{id}", requirements={"id"="MyClass::MyValidation"})
* @Secure(roles="ROLE_ADMIN")
*
* @return Response
*/
public function getClassAction($id)

我的类
MyClass
{
// Would be ideal to stick this into parameters.yml though
const ID = "([0-9a-fA-F]){8}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){12}";

public function MyValidation($value)
{
if (!preg_match(self::ID, $value)) {
return 'Bad ID';
}

return true;
}
}

最佳答案

您应该直接使用该模式,如下所示:

<?php

use X\Y\Z\MyClass;

class XYZ
{

/**
* @param string $id
*
* @Method({"GET"})
* @Route("/class/{id}", requirements={"id":MyClass::ID})
* @Secure(roles="ROLE_ADMIN")
*
* @return Response
*/
public function getClassAction($id)

关于symfony - 在 Symfony 中为 @Route 注释创建自定义需求验证器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35042152/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com