如何在编辑表单中使用 DoctrineModule\Validator\NoObjectExists - Zend Framework 2 和 Doctrine 2

2023-12-01

最有效的使用方法是什么DoctrineModule\Validator\NoObjectExistsZend Form 中的验证器也用于编辑?因为当我使用相同的表单来保存编辑的值时,这会验证对象存在并标记表单无效。


几周前,我在自定义过滤器中使用辅助方法解决了同样的问题。我不确定这是否是正确的方法,但它确实有效。

  1. 编写自定义输入过滤器扩展Zend\InputFilter\InputFilter.
  2. 添加您的通用过滤器和验证器init()过滤方法。
  3. 在输入过滤器中编写一个辅助方法,将学说的存在验证器附加到当前验证器链,如下所示。
  4. 创建新对象时将存在验证器添加到过滤器实例,编辑时使用通用过滤器实例。

So,

<?php
/**
 * Baz filter
 */
class BazFilter extends Zend\InputFilter\InputFilter
{

/**
 * This method will be triggered automatically when you retrive baz filter via inputfiltermanager.
 */
public function init() 
{
    // Define your input names, types, validators and filters as arrays
    $this->add(array(
        'name' => 'code',
        'required' => true,
        'validators' => array(),
        'filters' => array()
    ));

    $this->add( array(...) );
    $this->add( array(...) );
    // ...
}

/**
 * Appends doctrine's noobjectexists validator to validator chain only when required.
 * 
 * @access public
 * @param \Doctrine\ORM\EntityRepository $repository
 * @return \Zend\InputFilter\InputFilter
 */
public function appendExistenceValidator(\Doctrine\ORM\EntityRepository $repository)
{
     $validatorSignature = array(
        'name' => 'code',
        'validators' => array(
            array(
                'name' => 'DoctrineModule\Validator\NoObjectExists',
                'options' => array(
                    'object_repository' => $repository,
                    'fields' => 'code',
                    'messages' => array( NoObjectExists::ERROR_OBJECT_FOUND => "This object with code already exists in database." )
                )
            )
        )
    );
    $validator = $this->getFactory()->createInput( $validatorSignature );
    $this->add($validator);
    return $this;
    }
}

最后,在编辑时将此输入过滤器附加到您的表单中:

// $form = your form instance
// $filter = Bazfilter instance
$form->setData($postData)->setInputFilter( $filter );
if( $form->isValid() === false ) {
    // ...
}

创建时:

// $filter = bazfilter instance
$repository = $entityManager->getRepository('Your\Entity\Name');
$filter->appendExistenceValidator( $repository ); // <-- Notice this line

$form->setData($postData)->setInputFilter( $filter );
if( $form->isValid() === false ) {
    // ...
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在编辑表单中使用 DoctrineModule\Validator\NoObjectExists - Zend Framework 2 和 Doctrine 2 的相关文章

  • 从文本块中提取相关标签/关键字

    我想要一个特定的实现 以便用户提供如下文本块 要求 使用 Linux Apache 2 的 LAMP 环境的工作知识 MySQL 5 和 PHP 5 Web 2 0 标准知识 熟悉 JSON 使用框架 Zend OOP 的实践经验 跨浏览器
  • 根据数组计数填充复选框

    我是新来的php我已经使用了它的开发php array 我想填充checkboxes根据数组计数 为了做到这一点 我尝试了以下方式 它对我不起作用 有什么方法可以做到这一点 在我的例子中 数组计数 5 所以我相应地需要 5 个复选框
  • 在 Kohana 中,可以触发 404 错误吗?

    我有一个名为articles 它创建从数据库获取相关数据的文章模型 我想 如果我调用的方法返回false 触发 404 错误 这是我到目前为止所拥有的 articleName this gt uri gt segment articles
  • 如何让 shell_exec 在 IIS 6.0 上运行

    问题 我有一个 PHP 脚本 它使用shell exec运行 pdf 到文本转换器 为了简化问题 我创建了一个简短的脚本 使用shell exec只是回显的输出dir命令 当我在 Apache 服务器上运行它时 一切都按预期运行 当我切换到
  • 如何验证使用 php 上传的文件不包含可执行二进制文件?

    使用简单的 Firefox 插件 黑客可以更改他们想要上传的任何文件的 MIME 类型 绕过文件类型检查器 然后 黑客可以使用 GIMP 等程序将 php 脚本嵌入到图像 音频或任何其他文件的二进制数据中 我该如何检查并防止这种情况发生 您
  • CSS 无法与 CodeIgniter 一起使用

    这是我的 CI 代码的一部分 class page extends CI Controller var Page public function construct parent construct this gt Page 1 this
  • 访问自定义表单控件的有效值

    我创建了代表密码表单控件的自定义组件 下面的代码已简化 密码组件 html
  • Node.js 进行 rsa 加密的正确方法?

    我正在尝试创建一个 WS 来发出肥皂请求 在消息正文中有一个包含加密文本的字段 我有公钥来加密文本 但我获得的唯一结果是文本无法识别 我使用节点的加密模块来发出请求 并且文本已加密 但我不知道为什么没有正确加密 PS我用 openssl p
  • 从 PDO 准备好的语句中获取原始 SQL 查询字符串

    在准备好的语句上调用 PDOStatement execute 时 有没有办法让原始 SQL 字符串执行 出于调试目的 这将非常有用 我假设您的意思是您想要最终的 SQL 查询 并将参数值插入其中 我知道这对于调试很有用 但这不是准备好的语
  • 有什么方法可以在不重新加载的情况下更改标头 URL? [复制]

    这个问题在这里已经有答案了 可能的重复 修改URL而不重新加载页面 https stackoverflow com questions 824349 modify the url without reloading the page 使用新
  • 如何从控制器访问 Zend Framework 应用程序的配置?

    我有一个基于 Zend 框架的应用程序快速开始 http framework zend com docs quickstart setup 我已经让演示工作起来 现在正在实例化一个新的模型类来完成一些实际工作 在我的控制器中 我想将配置参数
  • 如何在 PHP 数组中的另一个已知(通过键或指针)元素之后有效地插入元素?

    给定一个数组 a array abc 123 k1 gt v1 k2 gt v2 78 tt k3 gt v3 当其内部指针指向其元素之一时 如何在当前元素之后插入元素 如何在键已知元素 例如 k1 之后插入元素 表现护理 您可以通过使用拆
  • 从数据库 MYSQL 和 Codeigniter 获取信息

    如果你们需要其他信息 上一个问题就在这里 从数据库中获取信息 https stackoverflow com questions 13336744 fetching information from the database 另一个更新 尽
  • ActiveRecord 布尔验证接受非布尔值

    我正在尝试验证属性是否为布尔值 即 true 或 false 从我期望的 Rails 指南中 validates new out of stock inclusion in true false 可以工作 但它接受非布尔值 例如 Hi 作为
  • PHP 日志文件颜色

    我正在编写一个 PHP 日志文件类 但我想为写入文件的行添加颜色 我遇到的问题是颜色也会改变终端的颜色 我想要实现的是仅更改写入日志文件的行的颜色 class logClass extends Singleton private funct
  • 通过ajax执行后期操作时如何克服CORS重定向问题?

    我可以通过外部登录表单中的 post 方法类型提交表单来登录 roundcube 实例 托管在另一台服务器上 我收到此错误 通过 ajax 签名时 XMLHttpRequest 无法加载https 192 168 0 7 mail http
  • 与 array_intersect 相反?

    是否有一个内置函数可以获取数组 1 中不存在于数组 2 中的所有成员 我知道如何以编程方式执行此操作 只是想知道是否有一个内置函数可以执行相同的操作 所以请不要提供代码示例 这听起来像是一份工作array diff http www php
  • 图像创建从jpeg() PHP

    我正在使用 imagecreatefromjpeg 函数合并两张图片 现在我面临的问题是 当我使用服务器中的图片时 它工作正常 而当我使用其他网站的图片时 它不起作用 例如 当我使用这个 PHP 文件时http coolfbapps in
  • PHP 文件服务脚本:下载不可靠?

    这篇文章最初是关于 ServerFault 的一个问题 https serverfault com questions 131156 user receiving partial downloads https serverfault co
  • 如何获取 URL 中未知的 $_GET 值的数组?

    我正在使用一个在线购物车 它接受订购的商品并通过 URL 将其唯一 ID 传递到 process php 页面 所以 URL 看起来像这样 process php code 1 231 code 2 532 code 3 342 Anoth

随机推荐

  • MySQL INSERT INTO / ON DUPLICATE KEY 与 SELECT 语句问题

    你好 我是 MySQL 菜鸟 我有一个包含各种企业列表的表 我正在尝试填充第二个名为 城市 的表 其中包含唯一的城市名称以及每个城市的列表数量 我可以执行 SELECT 语句来获取这些数据 如下所示 SELECT city state su
  • 更改单个 ASP.NET Core 控制器的 JSON 序列化设置

    我有两个控制器 ControllerA and ControllerB 每个控制器的基类是Controller The ControllerA需要以默认格式 camelCase 返回 JSON 这ControllerB需要以不同的 JSON
  • 如何绘制 ggplot 树形图?

    我希望在地图上获得这种渐变颜色 ramp lt colorRamp c royalblue4 white ramp list lt rgb ramp seq 0 1 length 15 max 255 而且 更重要的是 我希望向图表添加情节
  • 来自 C++ 的 C# USB 驱动程序:SetupDiGetDeviceInterfaceDetail

    我在尝试从 C 调用 SetupDiGetDeviceInterfaceDetail 时遇到问题 它始终返回 1784 错误代码 提供的用户缓冲区对于请求的操作无效 这是我的 C 代码 Guid GUID DEVINTERFACE DFU
  • UnicodeEncodeError: 'ascii' 编解码器无法对位置 0 处的字符 u'\xef' 进行编码:序数不在范围内 (128)

    我想解析我的 XML 文档 所以我存储了我的 XML 文档 如下所示 class XMLdocs db Expando id db IntegerProperty name db StringProperty content db Blob
  • 没有鉴别器列的 EclipseLink JPA 继承

    我有一个 Client 和 Affiliate 类 继承自 Person 类 正在使用联合继承策略类型 每个继承策略都与父类共享主键 由于没有鉴别器列 我们选择使用描述符定制器和类提取器 但它并没有真正给出任何它是如何工作的想法 而且代码似
  • 如何在 maven pom.xml 中定义属性并从命令行传递参数?

    我需要传递两个参数 比如说shell and version从命令行 问题是我无法理解如何定义这两个变量pom xml 然后在运行时获取我的 Java 代码中的参数 另外 当我将其作为 Maven 项目运行时 如何设置参数值 任何建议都会有
  • 某些 UTF-8 字符在浏览器上不显示

    某些 UTF 8 字符如 C2 96 连字符 的 UTF 8 等效字符 在浏览器上它显示为 带有 00 96 的 utf 框 而不是 连字符 这种行为有什么原因吗 我们该如何纠正这个问题 http stuffofinterest com m
  • 为什么 SQL Server 中的临时表没有从 tempdb 中删除?

    我创建了一个包含 7 个临时表的存储过程 每个临时表在其工作结束时都会被删除 我从一个 Web 服务调用 SP 并且我们在不同的实例中使用相同的 Web 服务 我已强制删除每个临时表 但是当 SP 执行时 它不会删除位于 tempdb 临时
  • 使用 Django auth UserAdmin 进行自定义用户模型

    来自Django Contrib Auth 文档 扩展 Django 的默认用户如果您对 Django 的 User 模型完全满意 并且只想添加一些额外的个人资料信息 您可以简单地子类化django contrib auth models
  • DataSnap XE2 和 TStream 方法参数

    我正在 Delphi XE2 中使用 TCP IP 协议开发 DataSnap 项目 该项目需要将二进制数据流作为方法参数传递到服务器 我遇到的问题是流内容似乎有大约 32 KB 的大小限制 超出此限制 服务器接收到的流为空 如果我传递其他
  • 使用经典 ASP 从 COM 对象检索字符串数组

    我有一个 NET 类 它包含通过访问器方法可用的简单字符串数组 如下所示 namespace Foo Bar ComVisible true Guid 642279A0 85D4 4c7a AEF5 A9FAA4BE85E5 public
  • hibernate.enable_lazy_load_no_trans 不起作用

    我正在使用 JPA2 1 和 hibernate 4 3 8 并且我已配置 persistence xml 以允许延迟加载 我已经添加了
  • 3D Touch 冻结我的应用程序

    也许我的问题等于 如果轻轻触摸 力触动画会冻结 iPhone 6s 中的 peek and pop 实施中应用程序冻结 1 无 bug 的强制触摸 一个UITransitionView创建图层是为了预览我的视图控制器 它工作完美 2 用 b
  • 一个函数在内存中只存储一次吗?

    当我们在对象或全局中的任何地方定义函数时 javascript函数是否会存储在内存中一次 function alert some value obj m function alert some value 如果您定义该函数一次 并将该函数的
  • Dataproc Hive 操作员未运行存储桶中存储的 hql 文件

    我正在尝试使用气流脚本运行云存储中存在的 hql 文件 我们可以通过两个参数将路径传递给 DataprocHiveOperator 查询 gs bucketpath filename q Error occuring cannot reco
  • 如何在Android 11中调整手机屏幕中的应用程序?

    在 Android 11 之前 我已经轻松地将我的应用调整为全屏 我的旧手机的摄像头孔和基本按钮位于屏幕区域之外 我的新手机的摄像头孔和基本按钮位于屏幕区域内 经过很少的设置 我的应用程序在旧手机上全屏显示 样式 xml
  • 用分号连接字符串数组

    这是一种经常出现在我们框架的一部分中的模式 给定一个字符串数组 我们必须将所有字符串连接起来 并用分号分隔 我想知道可以用哪种优雅的方式来完成 我在我们的代码库中看到了一些变化 而且当我必须这样做时 我总是必须再次重新考虑 我目前的模式是这
  • AVUrlAsset 和 WebVTT

    在 iOS TVOS 上 是否可以从 URL 加载远程 vtt 文件并将其用作字幕轨道 同时还从 URL 加载远程 HLS 视频 而不是在 m3u8 播放列表中指定的 VTT 伪代码 AVAsset video asset AVAsset
  • 如何在编辑表单中使用 DoctrineModule\Validator\NoObjectExists - Zend Framework 2 和 Doctrine 2

    最有效的使用方法是什么DoctrineModule Validator NoObjectExistsZend Form 中的验证器也用于编辑 因为当我使用相同的表单来保存编辑的值时 这会验证对象存在并标记表单无效 几周前 我在自定义过滤器中