API Platform自定义控制器报500错误「控制器既非服务也无对应类」如何解决
问题根因
你在User实体的@ApiResource注解中配置自定义控制器时,错误地将RegisterController::class包裹了双引号,导致API Platform将其识别为普通字符串,而非实际的控制器类全限定名,因此抛出找不到控制器的错误。
修复方案
修改User实体中@ApiResource的collectionOperations配置,移除controller值外侧的双引号:
/** * @ORM\Entity(repositoryClass=UserRepository::class) * @ApiResource( * normalizationContext={"groups"={"user:read"}}, * denormalizationContext={"groups"={"user:write"}}, * collectionOperations={ * "get", * "post", * "register" = { * "method" = "POST", * "path" = "/register", * "controller" = RegisterController::class, // 移除外侧双引号即可 * } * } * ) */ class User implements UserInterface, PasswordAuthenticatedUserInterface { // 原有实体代码保持不变 }
后续操作
修改完成后执行缓存清理命令确保配置生效:
php bin/console cache:clear
可选校验
修复后可以执行命令验证路由对应的控制器是否正确:
php bin/console debug:router api_users_register_collection
输出结果中Controller字段显示为App\Controller\RegisterController即表示配置正确。
内容的提问来源于stack exchange,提问作者MisterLexisDev
相关产品推荐
相关产品推荐

