Symfony4 对自定义路由使用自定义方法控制器

Symfony4 对自定义路由使用自定义方法控制器,symfony4,api-platform.com,Symfony4,Api Platform.com,我为PUT项操作创建了一个自定义控制器。我使用\u invoke方法进行默认操作,但我尝试使用自定义方法对同一项执行第二次PUT操作 我尝试了这个配置,但没有成功 * "activate"={ * "method"="PUT", * "path"="/safety_rooms/{id}/activate", * "requirements"={"id"="\d+"}, * "cont

我为PUT项操作创建了一个自定义控制器。我使用
\u invoke
方法进行默认操作,但我尝试使用自定义方法对同一项执行第二次PUT操作


我尝试了这个配置,但没有成功

*         "activate"={
*             "method"="PUT",
*             "path"="/safety_rooms/{id}/activate",
*             "requirements"={"id"="\d+"},
*             "controller"=SafetyRoomPutItem::activeRoom,
*          },
*         "activate"={
*             "method"="PUT",
*             "path"="/safety_rooms/{id}/activate",
*             "requirements"={"id"="\d+"},
*             "controller"=SafetyRoomPutItem::class.activeRoom,
*          },
*         "activate"={
*             "method"="PUT",
*             "path"="/safety_rooms/{id}/activate",
*             "requirements"={"id"="\d+"},
*             "controller"=SafetyRoomPutItem::class(activeRoom),
*          },
*         "activate"={
*             "method"="PUT",
*             "path"="/safety_rooms/{id}/activate",
*             "requirements"={"id"="\d+"},
*             "controller"=SafetyRoomPutItem::class:activeRoom,
*          },
*         "activate"={
*             "method"="PUT",
*             "path"="/safety_rooms/{id}/activate",
*             "requirements"={"id"="\d+"},
*             "controller"=SafetyRoomPutItem:activeRoom,
*          },
*         "activate"={
*             "method"="PUT",
*             "path"="/safety_rooms/{id}/activate",
*             "requirements"={"id"="\d+"},
*             "controller"=[SafetyRoomPutItem::class, "activeRoom"],
*          },
但是我得到
[语义错误]找不到常量App\Controller\safetyroputitem::activeRoom,class App\Entity\SafetyRoom。


我尝试了这个配置,但没有成功

*         "activate"={
*             "method"="PUT",
*             "path"="/safety_rooms/{id}/activate",
*             "requirements"={"id"="\d+"},
*             "controller"=SafetyRoomPutItem::activeRoom,
*          },
*         "activate"={
*             "method"="PUT",
*             "path"="/safety_rooms/{id}/activate",
*             "requirements"={"id"="\d+"},
*             "controller"=SafetyRoomPutItem::class.activeRoom,
*          },
*         "activate"={
*             "method"="PUT",
*             "path"="/safety_rooms/{id}/activate",
*             "requirements"={"id"="\d+"},
*             "controller"=SafetyRoomPutItem::class(activeRoom),
*          },
*         "activate"={
*             "method"="PUT",
*             "path"="/safety_rooms/{id}/activate",
*             "requirements"={"id"="\d+"},
*             "controller"=SafetyRoomPutItem::class:activeRoom,
*          },
*         "activate"={
*             "method"="PUT",
*             "path"="/safety_rooms/{id}/activate",
*             "requirements"={"id"="\d+"},
*             "controller"=SafetyRoomPutItem:activeRoom,
*          },
*         "activate"={
*             "method"="PUT",
*             "path"="/safety_rooms/{id}/activate",
*             "requirements"={"id"="\d+"},
*             "controller"=[SafetyRoomPutItem::class, "activeRoom"],
*          },
但是我在类App\Entity\SafetyRoom中的1274位置得到了“.”预期的条令\Common\Annotations\DocLexer::T\u CLOSE\u CURLY\u大括号


我尝试了这个配置,但没有成功

*         "activate"={
*             "method"="PUT",
*             "path"="/safety_rooms/{id}/activate",
*             "requirements"={"id"="\d+"},
*             "controller"=SafetyRoomPutItem::activeRoom,
*          },
*         "activate"={
*             "method"="PUT",
*             "path"="/safety_rooms/{id}/activate",
*             "requirements"={"id"="\d+"},
*             "controller"=SafetyRoomPutItem::class.activeRoom,
*          },
*         "activate"={
*             "method"="PUT",
*             "path"="/safety_rooms/{id}/activate",
*             "requirements"={"id"="\d+"},
*             "controller"=SafetyRoomPutItem::class(activeRoom),
*          },
*         "activate"={
*             "method"="PUT",
*             "path"="/safety_rooms/{id}/activate",
*             "requirements"={"id"="\d+"},
*             "controller"=SafetyRoomPutItem::class:activeRoom,
*          },
*         "activate"={
*             "method"="PUT",
*             "path"="/safety_rooms/{id}/activate",
*             "requirements"={"id"="\d+"},
*             "controller"=SafetyRoomPutItem:activeRoom,
*          },
*         "activate"={
*             "method"="PUT",
*             "path"="/safety_rooms/{id}/activate",
*             "requirements"={"id"="\d+"},
*             "controller"=[SafetyRoomPutItem::class, "activeRoom"],
*          },

我尝试了这个配置,但没有成功

*         "activate"={
*             "method"="PUT",
*             "path"="/safety_rooms/{id}/activate",
*             "requirements"={"id"="\d+"},
*             "controller"=SafetyRoomPutItem::activeRoom,
*          },
*         "activate"={
*             "method"="PUT",
*             "path"="/safety_rooms/{id}/activate",
*             "requirements"={"id"="\d+"},
*             "controller"=SafetyRoomPutItem::class.activeRoom,
*          },
*         "activate"={
*             "method"="PUT",
*             "path"="/safety_rooms/{id}/activate",
*             "requirements"={"id"="\d+"},
*             "controller"=SafetyRoomPutItem::class(activeRoom),
*          },
*         "activate"={
*             "method"="PUT",
*             "path"="/safety_rooms/{id}/activate",
*             "requirements"={"id"="\d+"},
*             "controller"=SafetyRoomPutItem::class:activeRoom,
*          },
*         "activate"={
*             "method"="PUT",
*             "path"="/safety_rooms/{id}/activate",
*             "requirements"={"id"="\d+"},
*             "controller"=SafetyRoomPutItem:activeRoom,
*          },
*         "activate"={
*             "method"="PUT",
*             "path"="/safety_rooms/{id}/activate",
*             "requirements"={"id"="\d+"},
*             "controller"=[SafetyRoomPutItem::class, "activeRoom"],
*          },

我尝试了这个配置,但没有成功

*         "activate"={
*             "method"="PUT",
*             "path"="/safety_rooms/{id}/activate",
*             "requirements"={"id"="\d+"},
*             "controller"=SafetyRoomPutItem::activeRoom,
*          },
*         "activate"={
*             "method"="PUT",
*             "path"="/safety_rooms/{id}/activate",
*             "requirements"={"id"="\d+"},
*             "controller"=SafetyRoomPutItem::class.activeRoom,
*          },
*         "activate"={
*             "method"="PUT",
*             "path"="/safety_rooms/{id}/activate",
*             "requirements"={"id"="\d+"},
*             "controller"=SafetyRoomPutItem::class(activeRoom),
*          },
*         "activate"={
*             "method"="PUT",
*             "path"="/safety_rooms/{id}/activate",
*             "requirements"={"id"="\d+"},
*             "controller"=SafetyRoomPutItem::class:activeRoom,
*          },
*         "activate"={
*             "method"="PUT",
*             "path"="/safety_rooms/{id}/activate",
*             "requirements"={"id"="\d+"},
*             "controller"=SafetyRoomPutItem:activeRoom,
*          },
*         "activate"={
*             "method"="PUT",
*             "path"="/safety_rooms/{id}/activate",
*             "requirements"={"id"="\d+"},
*             "controller"=[SafetyRoomPutItem::class, "activeRoom"],
*          },

我尝试了这个配置,但没有成功

*         "activate"={
*             "method"="PUT",
*             "path"="/safety_rooms/{id}/activate",
*             "requirements"={"id"="\d+"},
*             "controller"=SafetyRoomPutItem::activeRoom,
*          },
*         "activate"={
*             "method"="PUT",
*             "path"="/safety_rooms/{id}/activate",
*             "requirements"={"id"="\d+"},
*             "controller"=SafetyRoomPutItem::class.activeRoom,
*          },
*         "activate"={
*             "method"="PUT",
*             "path"="/safety_rooms/{id}/activate",
*             "requirements"={"id"="\d+"},
*             "controller"=SafetyRoomPutItem::class(activeRoom),
*          },
*         "activate"={
*             "method"="PUT",
*             "path"="/safety_rooms/{id}/activate",
*             "requirements"={"id"="\d+"},
*             "controller"=SafetyRoomPutItem::class:activeRoom,
*          },
*         "activate"={
*             "method"="PUT",
*             "path"="/safety_rooms/{id}/activate",
*             "requirements"={"id"="\d+"},
*             "controller"=SafetyRoomPutItem:activeRoom,
*          },
*         "activate"={
*             "method"="PUT",
*             "path"="/safety_rooms/{id}/activate",
*             "requirements"={"id"="\d+"},
*             "controller"=[SafetyRoomPutItem::class, "activeRoom"],
*          },
但是我得到了
[Syntax Error]预期的纯值,在类App\Entity\SafetyRoom中1250处得到了“[”。



是否确实在使用类时声明了完全限定的命名空间:
使用App\Controller\safetyroputitem\safetyroputitem

参见下面的“或者,您也可以使用传统的Symfony控制器”