首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Symfony API-Platform Assert\Choice在setter上不工作

Symfony API-Platform是一个用于构建RESTful API的开发框架,而Assert\Choice是Symfony框架中的一个验证器,用于验证属性的值是否在指定的选项列表中。然而,有时候在setter方法上使用Assert\Choice验证器可能会出现不起作用的情况。

这个问题可能是由于以下几个原因导致的:

  1. 验证器位置错误:确保Assert\Choice验证器位于属性的getter方法上而不是setter方法上。验证器应该在获取属性值时进行验证,而不是在设置属性值时。
  2. 验证器参数配置错误:在使用Assert\Choice验证器时,需要指定选项列表作为验证器的参数。确保选项列表正确配置,并且属性的值确实在选项列表中。
  3. 验证器未被正确应用:确保在实体类中正确使用了Symfony的验证器组件,并且在API资源类中正确配置了验证组。

针对这个问题,可以尝试以下解决方案:

  1. 确保在实体类的getter方法上正确配置Assert\Choice验证器,并将选项列表作为验证器的参数。例如:
代码语言:txt
复制
use Symfony\Component\Validator\Constraints as Assert;

class YourEntity
{
    /**
     * @Assert\Choice(choices={"option1", "option2", "option3"})
     */
    public function getYourProperty()
    {
        return $this->yourProperty;
    }

    public function setYourProperty($value)
    {
        $this->yourProperty = $value;
    }
}
  1. 确保在API资源类中正确配置验证组。例如:
代码语言:txt
复制
use ApiPlatform\Core\Annotation\ApiResource;
use Symfony\Component\Validator\Constraints as Assert;

/**
 * @ApiResource(
 *     collectionOperations={
 *         "post"={
 *             "validation_groups"={"Default", "your_validation_group"}
 *         }
 *     },
 *     itemOperations={
 *         "get",
 *         "put"={
 *             "validation_groups"={"Default", "your_validation_group"}
 *         }
 *     }
 * )
 */
class YourResource
{
    /**
     * @Assert\Choice(choices={"option1", "option2", "option3"}, groups={"your_validation_group"})
     */
    public $yourProperty;
}

以上是关于Symfony API-Platform Assert\Choice在setter上不工作的一些可能原因和解决方案。对于更多关于Symfony API-Platform的信息和相关产品介绍,您可以访问腾讯云的Symfony云托管服务:Symfony云托管

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

基于Docker的PHP开发环境

容器技术、Docker和更多类Docker技术出现后,解决这个问题就变得简单了。 免责声明 由于boot2docker的工作方式,本文所述的方法在你的环境中可能无法正常运行。...因为我比较懒,加上我需要在我的笔记本放点别的内容,所以,这里我们只介绍单个容器的方法。 初始化工程 首先要做的是初始化一个新的Symfony工程....本来可以工作站上安装composer,但是那样太简单了。这次我们通过Docker来使用它。...本容器的源代码GitHub的 ubermuda/docker-symfony仓库中可以找到。...基本你可以通过 docker run的-e选项容器中设置环境变量,启动脚本会拿到环境变量,因此,如果你的DB名为some_project_dev, 你就可以这么运行容器: $ docker run

3.3K90
  • 2.Jenkins进阶之流水线pipeline语法入门学习

    答: Pipeline(流水线)是 Jenkins 2.0 的精髓它基于Groovy语言实现的一种DSL(领域特定语言),简而言之就是一套运行于Jenkins工作流框架,用于描述整条流水线是如何进行的...2.customWorkspace (参数: 字符串) : 运行 Pipeline或个人 stage 这 agent 是这个自定义的工作空间内的应用,而不是默认的, 它可以是相对路径(在这种情况下自定义工作空间将位于节点工作空间根目录下...3.reuseNode(参数: 布尔值-false): 如果为true同一工作空间中 Pipeline顶级指定的节点运行容器,而不是整个新节点运行 4.args (参数: 字符串): 要传递给的运行时参数...pwd:确认当前目录 dir: 默认pipeline工作工作空间目录下,dir步骤可以让我们切换到其他目录。 deleteDir:是一个无参步骤删除的是当前工作目录。...实际你应该避免使用this和getContext而只是插件中定义一个步骤。

    17.5K20

    SCTF-2021 部分WriteUp

    ://opis.io/closure/3.x/serialize.html 序列化闭包,很容易联想到反序列化,那么我们就尝试找找有没有能触发反序列化的地方吧~ 首先我们index.php中可以看到session...因为我省略了'ls /' ) 再把__toString()首行添加return 'xx';(不然待会序列化对象会出错) 然后index.php同目录下新建test.php,内容如下: <?...into = '\0'; } 这个函数实现了一个简单的数据压缩功能,就是相当于把C语言注释内容去掉,由于边界检查不严格的问题,会导致多复制一段内存导致溢出,所以可以很简单地输入/*来泄露出目标服务器的内容...process(file_name) else: sh = remote(IP,port) def debug(): gdb.attach(sh) pause() def cmd(choice...): sh.recvuntil(menu) sh.sendline(str(choice)) payload = 'a'*12 payload += "/*" sh.send(payload

    1.8K30

    Yahoo 书签系统使用 Php 语言的 symfony 框架

    开发社区活跃 大量优秀的现成组件 Michael Salisbury  把是否拥有良好的开发文档排在第一位,可见开源框架竞争越来越激烈的今天,没有良好的文档,或者像前些年类似JBoss靠卖文档...Michael Salisbury   还特别强调,symfony 的另一个优点是良好的配置机制不只是体现在后台控制,在前台的界面和本地化也十分强大。...Yahoo 书签用了 12 人/月 的工作量,今年6月中旬开始开发。 现在已经拥有了2千万用户,12个国家的语言版本。 效率可真够高的。... 过,总结我这几年的互联网使用的经验看,自己收藏的书签从来没有用过,也很少看别人的书签。因为搜索引擎可以很快找到你需要的东西,看别人的书签,只会产生好内容真多的感觉,对自己则没有实际影响。...csdn blog 最近在自动生成tag和相关blog的尝试很值得借鉴,当然奇虎早这么干了。 原文链接:yahoo bookmark use symfony framwork

    99120

    python3--面向对象内置方法例子,python异常处理

    试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x IOError 输入/输出异常;基本是无法打开文件 ImportError 无法引入模块或包;基本是路径问题或名称错误 IndentationError...'1':test } while True:     choice=input('>>: ').strip()     if not choice or choice not in choice_dic...错误了 异常类只能用来处理指定的异常情况,如果非指定异常则无法处理 例2: s1 = 'hello' try:     int(s1) except IndexError as e:  # 捕获的异常匹配...断言:相当于if assert 1 == 2 print(123) print(456) 执行结果 AssertionError assert程序没有满足条件,下面的代码都不执行,它和if的功能类似,...断言用一个非常果决的场景,如果不满足,后面的代码都不执行(也可以捕获,但是没有人这么做) try..except的方式比较if的方式的好处 try..except这种异常处理机制就是取代if那种方式,让你的程序牺牲可读性的前提下增强健壮性和容错性

    61210

    面向对象:异常处理

    part3:python中的异常种类 python中不同的异常可以用不同的类型(python中统一了类与类型,类型即类)去标识,不同的类对象标识不同的异常,一个异常标识一种错误 # 触发IndexError...def test(): print('test running') choice_dic={ '1':test } while True: choice=input('>>: '...).strip() if not choice or choice not in choice_dic:continue #这便是一种异常处理机制啊 choice_dic[choice]...return self.msg try: raise EvaException('类型错误') except EvaException as e: print(e) part8:断言 # assert...条件 assert 1 == 1 assert 1 == 2 part9:try..except的方式比较if的方式的好处 try..except这种异常处理机制就是取代if那种方式,让你的程序牺牲可读性的前提下增强健壮性和容错性

    53020

    你必须知道的 17 个 Composer 最佳实践(已更新至 22 个)

    例如,使用形如 "symfony/symfony": "^3.1",有可能存在在 3.2 版本废弃的东西,而这会破坏你的应用程序该版本下通过测试。...该库开发完成后,实际项目中使用该库,就可能存在安装的 Monolog 是一个新版本 , 而此时就会和该库存在兼容。可是你之前根本就不会注意到兼容问题就因为这个 composer.lock!...: composer update symfony/* --with-dependencies 这全都是很乏味的工作,但相对于不小心升级依赖项而言,这提供了额外保障。...比如,从Github添加一个 fork,使用它的 API 下载整个版本库的 .zip 文件,而不用克隆。 不过对一个私有的 Gitlab 安装来讲会更复杂。...本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接undefined我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

    7.5K20

    如何选择PHP框架?

    它有30个组件可以选择,开发人员可以有足够的自由RAD环境下进行试验和工作Symfony API还允许使用第三方应用来方便集成,它可以与流行的前端框架,例如AngularJS一起使用。...(Livecoding.tv,有一个优秀的Laravel程序员,他就是Sfiskell。) ? (Sfishell直播中) 2015年5月,Laravel宣布5.1版将提供长达两年的用户支持。...Symfony用可重复使用的组件工作,它还提供了最佳的模块化。Symfony也利用模型和控制器来开发Web应用程序,许多开发人员眼中,它可能看起来是迟钝的,但它是有作用的。...项目是开源的,其源代码可以GitHub找到,让任何人都能轻松做出贡献: Symfony Laravel Yii 该框架有很好的文档记录,并由一个大社区支持。 它们都支持ORM(对象关系映射)。...要想了解这些框架是如何工作的,可以访问Livecoding.tv。网站上的开发人员使用Symfony, Yii和 Laravel来开发项目。他们直播过程中还可以通过Skype与观众沟通。

    7.8K90

    撸个 symfony4(二)

    用户可以投稿,需要填写的内容为“标题”+“正文” 用户可以对某篇文章进行评论 以上的基础,我们继续具体化我们的需求: 用户的内容都将使用 markdown 格式 评论内容不可超过 140 个字...Symfony 框架本身并不包含 ORM 工具(严格意义上来说,Symfony 框架,即 FrameworkBundle,包含 ORM,安全组件,模板引擎,日志工具,邮件组件等一系列工具),只不过 Symfony...听起来要做的工作不少,不过且慢,DoctrineBundle 里自带的代码生成工具能让我们的开发再快一点点: sf4使用orm,需要`composer require orm`....解决: .env文件中修改 ?...不仅如此,也推荐使用 @Template 注解来猜模板路径(官方说法:主要因为性能问题),所以得把生成的 src/AppBundle/Resources 目录移到 app 目录,并且去掉控制器类里的所有

    2.4K20

    如何在 CentOS 8 安装和使用 Composer

    这篇指南将会介绍 CentOS 8 安装 Composer 的几个步骤。如果你很着急,并且不想验证文件完整性,往下滑动到 “快速安装 Composer” 这一节。...一、前提条件 确保继续下面的步骤之前,你满足了下面的前提条件: 以拥有 sudo 权限的用户身份登录 已经 你的 CentOS 8 系统安装了 PHP 二、 CentOS 安装 Composer... CentOS 8 执行下面的步骤,安装 Composer。...Composer 安装脚本: php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" 上面的这个命令将会在当前工作目录下载一个名为...corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" 如果 哈希值匹配,下面的信息将会被展示: Installer verified 否则,如果哈希值匹配

    3.2K30

    撸个 symfony4(一)

    这是[官方文档](https://symfony.com) Before Start 注意: symfony 严格遵循标准的版本命名 API无法向下兼容 大版本号+1 准备工作 使用web server...我们便可以通过下面的命令开启一个 Web server 监听 localhost:8000 (注:此命令只能运行在 PHP 5.5 版本之上,并且 Windows 可能只能运行 server:run...,两者的区别你们自己试试就知道),这样开发阶段就可以不用安装和配置 Apache 或者 NGINX 也可以访问本地开发环境了,非常方便. app/console server:run or php app...如果你和我一样用symfony安装新的项目,使用上面的命令启动,可能会遇到如下的错误: ? 这是可以看看symfony的list: ? 这里需要一个TLS。也可以选项中注释掉。 ?...可以使用 Symfony 框架自带的脚本工具,来确认当前的环境是否已经足够顺利运行 Symfony: $ php app/check.php # Symfony 3.0+ 下 $ php bin/symfony_requirements

    44610

    是否需要使用依赖注入容器?

    @TODO 第 3 篇:Symfony 服务容器入门 @TODO 第 4 篇:Symfony 服务容器:使用建造者创建服务 @TODO 第 5 篇:Symfony 服务容器:使用 XML 或 YAML...我想明确的是,实现「依赖注入容器」时涉及 Symfony 相关功能,所以我将使用 Zend 框架示例来说明。 这边涉及框架之争。...我非常感谢 Zend 框架组件,事实Symfony 框架使用了许多 Zend 框架中的组件。...Zend Framework 的邮件组件可以轻松处理邮件管理工作,通常我们会使用 PHP 内建的 Mail() 函数发送电子邮件,但这不利于扩展。...为了完成这样的工作,「依赖注入容器」需要知道构造函数参数及其对应的依赖组件的对应关系。 下面以硬编码的方式实现一个 Zend_Mail 容器: <?

    2.2K20
    领券