Yii2:使用同一模型的两个实例进行表单验证

2023-12-04

我有一个预订模型,其中包含 Shipping_address 和 billing_address 字段,这两个字段都是模型地址。 我现在想将它们打印成相同的形式,基本上效果很好,问题是两个模型的字段具有相同的 ID。例如,shipping_address 中的字段“zip”的 id 为“zip”,billing_address 中的“zip”的 id 也为“zip”。

如果我现在填写表格,它会同时验证这两个字段,而只有其中一个字段实际上是正确的。

enter image description hereenter image description here

我已经将字段名称更改为 Shippping_Address['zip'] 和 Billing_Address['zip'],因此控制器能够识别这两个模型。

以下是打印字段的方式:

<?= $form->field($billing_address, 'address_line_1')->textInput(['maxlength' => 45, 'name'=> 'Billing_Address[address_line1]']); ?>
<?= $form->field($billing_address, 'address_line_2')->textInput(['maxlength' => 45, 'name'=> 'Billing_Address[address_line2]']) ?>
<?= $form->field($billing_address, 'zip')->textInput(['maxlength' => 11, 'name'=> 'Billing_Address[zip]']) ?>
<?= $form->field($billing_address, 'city')->textInput(['maxlength' => 45, 'name'=> 'Billing_Address[city]']) ?>
<?= $form->field($billing_address, 'country')->textInput(['maxlength' => 45, 'name'=> 'Billing_Address[country]']) ?>

<?= $form->field($shipping_address, 'address_line_1')->textInput(['maxlength' => 45, 'name'=> 'Shipping_Address[address_line1]']); ?>
<?= $form->field($shipping_address, 'address_line_2')->textInput(['maxlength' => 45, 'name'=> 'Shipping_Address[address_line2]']) ?>
<?= $form->field($shipping_address, 'zip')->textInput(['maxlength' => 11, 'name'=> 'Shipping_Address[zip]']) ?>
<?= $form->field($shipping_address, 'city')->textInput(['maxlength' => 45, 'name'=> 'Shipping_Address[city]']) ?>
<?= $form->field($shipping_address, 'country')->textInput(['maxlength' => 45, 'name'=> 'Shipping_Address[country]']) ?>

编辑:实施托尼的答案后:

<?= $form->field(
            $shipping_address,
            'address_line_1',
            [
                'selectors' => [
                    'input' => '#shipping-address_line_1',
                    'container' => '.shipping-address_line_1'
                ],
                'options' =>
                    ['class' => 'shipping-address_line_1']
            ])->textInput([
                'maxlength' => 45,
                'name'=> 'Shipping_Address[address_line1]',
                'id'=>'shipping-address_line_1',
            ]); ?>

我还更改了容器类,因为它与其他字段的容器类相同。现在第二个字段(代码如上所示)工作正常。问题是,第一个字段(代码不变)不再验证。

怎么解决这个问题呢?


因为您使用一个模型类在一页上生成两组输入,所以 yii2 生成相同的客户端验证为他们俩制定的规则。要单独验证,您需要设置id需要在每个集合中手动验证的每个输入的属性。对于您的邮政编码输入字段,解决方案将是下一个(根据最新评论编辑):

//Billing
$form->field($billing_address, 'zip', 
[
    'selectors' => [
        'input' => '#billing-zip',
        'container' => '#billing-container',
    ],
    'options' => ['id' => 'billing-container'],
])->textInput(['maxlength' => 11, 
               'name'=> 'Billing_Address[zip]', 
               'id'=>'billing-zip']); 

//Shipping
$form->field($shipping_address, 'zip', 
[
    'selectors' => [
        'input' => '#shipping-zip',
        'container' => '#shipping-container',
    ],
    'options' => ['id' => 'shipping-container'],
])->textInput(['maxlength' => 11, 
               'name'=> 'Shipping_Address[zip]', 
               'id'=>'shipping-zip']);

如您所见,我们添加了自定义id属性在文本输入options,并在其中设置相应的js验证选择器field选项。阅读选择器财产

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Yii2:使用同一模型的两个实例进行表单验证 的相关文章

  • 为什么我的会话仍然存在?

    我一定很愚蠢 因为似乎一件相当明显的事情现在让我完全困惑 我有一个会议 ie SESSION handbag id 在某个时刻 我需要彻底终止这个会话 ie at the start of the page session start el
  • php 数组中出现意外的 json 输出结构

    我正在尝试转换动态数据 如何从 PHP 获取此 JSON JSON 122240cb 253c 4046 adcd ae81266709a6 item 0 3 这就是我所做的 但它不起作用 PHP json array 122240cb 2
  • setcookie with expire=0 浏览器关闭后不会过期

    我使用setcookie来制作一个过期 0的cookie 从 PHP 文档来看 link http php net manual en function setcookie php cookie 过期的时间 这是一个 Unix 时间戳 所以
  • PHP 通过 SSL 连接到 MS SQL

    我想要实现的目标非常简单 我想通过安全连接从 PHP 脚本连接到外部 MS SQL 数据库 然而 这已被证明是有问题的 到目前为止 经过三个小时的研究 我不知所措 客户端的平台是Ubuntu 这意味着我无法使用SQLSRV 安全连接已经在不
  • AWS-PHP-SDK / SNS 直接寻址返回错误

    您好 我正在使用 Laravel 4 设置来利用 AWS SNS 向我的 iOS 设备发送推送消息 从 AWS 控制台向我的设备发布命令效果很好 然后我尝试从 PHP sns AWS get sns sns gt publish array
  • CakePHP 视图包括其他视图

    我有一个 CakePHP 应用程序 在某些时候会显示带有产品媒体 图片或视频 的视图 我想知道是否有某种方式可以包含另一个威胁视频或威胁图片的视图 具体取决于标志 我想将这些 小视图 用于其他几个目的 所以它应该 像 蛋糕组件一样 以便重用
  • 如何为名称为数组的 jquery 表单验证插件创建规则?

    有谁知道当您有一个数组的名称属性时如何为 jquery 表单验证插件创建规则 eg
  • 如何在 GitHub Action 中使用不同版本的 PHP 进行测试

    我有一些 PHP 代码 其中包含使用以下命令运行的测试PHPUnit并想对其进行测试GitHub Actions 我在他们的文档中找不到测试 PHP 包的方法 我想使用不同版本的 PHP 进行测试 但他们只有最新的版本7 3安装 您可以添加
  • 如何在 PHP 的 HTML 页面中显示错误消息?

    我有以下登录表单 login php 其中要求输入用户名和密码
  • 如何在 JavaScript 中创建服务器端进度指示器?

    我想在我的网站中创建一个部分 用户可以在其中进行一些简单的操作update纽扣 这些中的每一个update按钮将发送到服务器 并在幕后进行长时间的处理 当服务器处理数据时 我希望用户有某种进度指示器 例如进度条或文本百分比 我使用 jQue
  • 角度 2 通道数组到自定义验证器(模板驱动形式)

    我需要将一个对象数组传递给 a2 自定义验证器 然后我想根据该数组中的记录验证模板驱动表单字段的值 但是我无法检索验证器内的对象 我唯一能看到的是它的名称作为字符串 如有任何帮助 我们将不胜感激
  • 将 cookie 设置为在当天结束时过期

    我想设置一个 cookie 并让它在一天结束时过期 这有效 但 24 小时后过期 setcookie route upgrade voted true time 86400 这不起作用 setcookie route upgrade vot
  • 在 foreach 中使用 QueryPath 的多个查找

    我正在使用 QueryPath 和 PHP 这发现 eventdate 没问题 但不会为 dtstart 返回任何内容 qp htmlqp url foreach qp gt find table schedule gt find tr a
  • 在 PHP 字符串中格式化 MySQL 代码

    是否有任何程序 IDE 可以在 PHP 字符串中格式化 MySQL 代码 例如 我使用 PHPStorm IDE 但它无法做到这一点 它对 PHP 和 MYSQL 执行此操作 但不适用于 php 字符串内的 MYSQL 我已准备好使用新的
  • 确定 C 字符串是否是 C 中的有效 int

    我需要检查 C 字符串是否是有效整数 我都尝试过 int num atoi str and int res sscanf str d num 但发送字符串 8 9 10 这两行都仅返回 8 而没有指示该字符串的无效性 谁能提出替代方案 看看
  • 使用 PHP 从 Mongo 解码 JSON

    我已经看过这个线程 PHP 解码嵌套 JSON https stackoverflow com questions 3555335 php decode nested json并没有设法用它来解决我的问题 我目前正在从 Mongo 获取 J
  • 如何在codeigniter中将上传图片比例限制为16:9?

    这是我用来上传图像的代码 this gt load gt library upload ext pathinfo file name PATHINFO EXTENSION img name now ext imgConfig upload
  • 如何使用更新资源控制器 laravel 4?

    我有带有索引 编辑 更新方法的客户控制器 Route resource customer CustomerController 控制器方法更新 public function update id echo id 我的 HTML 表单
  • CodeIgniter:My_Lang 中的 get_instance

    我发现这个有用的国际化代码 http pastebin com SyKmPYTX http pastebin com SyKmPYTX 一切正常 除了我无法在此类中使用 CI 函数 我想从 DB 设置 languages 和 special
  • 如何从日期中查找该月的最后一天?

    如何在 PHP 中获取该月的最后一天 Given a date 2009 11 23 我要2009 11 30 并给出 a date 2009 12 23 我要2009年12月31日 t返回给定日期所在月份的天数 请参阅的文档date ht

随机推荐

  • 偶数斐波那契数之和 < X

    我正在研究这个 我似乎有一个可行的解决方案 但我很难理解它的行为 这是我所拥有的 usr bin python def even fib sums limit number 1 last 0 before last 0 total 0 fo
  • F# 异步显示 WPF 窗口

    这个问题一直让我抓狂 总体要点如下 我的解决方案中有两个项目 第一个是 F 控制台应用程序 第二个是 C 库 其中包含名为的 C XAML 类DisplayWindow继承自 WPF 窗口 DisplayWindow有一个方法public
  • 注销后的 JSF 生命周期

    我正在使用基于表单的身份验证 我有一个注销链接 如下所示
  • 如何返回一个字符串?

    import java util public class HangManP5 public static void main String args int attempts 10 int wordLength boolean solve
  • IllegalArgumentException,从 s3 而不是 hdfs 指定输入/输出时出现错误的 FS

    我一直在本地集群上运行 Spark 作业 该集群具有 hdfs 从中读取输入并写入输出 现在我已经设置了一个 AWS EMR 和一个 S3 存储桶 其中有我的输入 并且我希望我的输出也写入 S3 错误 用户类抛出异常 java lang I
  • Mac 和 iPhone 开发书籍 2009 [已关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 目前关于 Mac 和 iP
  • 用于从 [string] 解析输入参数-值对的本机机制

    是否有一个本机内置构造可以使用与 cmdlet 参数相同的规则自动将控制台输入解析为变量 例如 许多 cmdlet 接受以下形式的参数值对 parameter1 unspaced value1 parameter2 spaced value
  • Swift 3,元类型问题中的“.self”实际上正确吗?

    我有一个扩展可以沿着视图控制器链 甚至通过容器视图 这非常方便 public extension UIViewController go up to a certain class public func above
  • #1060 - 重复的列名

    为什么这个查询会出错 1060 Duplicate column name studentID 在 MySQL 中 我该如何预防 CREATE TEMPORARY TABLE tempTable select from member inf
  • Html 5 Canvas 完整箭头

    我正在使用 wPaint 插件 并尝试添加更多功能 我需要的是一条以 箭头 结尾的画线 我已经尝试了几乎所有我能想到的东西 但我只能得到箭头的一半 想象 这是绘制线条的函数 带有半箭头 drawArrowMove function e se
  • GCM.jar android studio

    现在我收到这个错误 Could not find gcm jar Please install the Android SDK Extra Google Cloud Messaging for Android Library using t
  • 将产品缩略图添加到我的帐户 - 最近的订单 - Woocommerce

    我想知道是否有办法将产品缩略图添加到 Woocommerce 前端 我的帐户 中买家的 最近订单 页面中 我一直在尝试寻找某种解决方案 但始终没有运气 我没有尝试过任何方法来给你一个代码 只是因为我不知道如何 实际上去解决这个问题 有人能指
  • 将 CA 签名的证书导入到 JKS

    I got 4 crt来自 CA 的文件如下 AddTrustExternalCARoot crt COMODORSADomainValidationSecureServerCA crt COMODORSAAddTrustCA crt de
  • 将 JSON 文件导入 MS Access 表

    我正在尝试将 JSON 文件导入到 MS Access 表中 我在网上查了一下 发现这个堆栈溢出链接说明了这一点 自动将 JSON feed 解析到 MS Access 中我已经复制并粘贴了该字符串中的代码 并对其进行了修改以提取我的 JS
  • Java如何调用对象的函数?

    从我之前和之后读到的内容来看 java文件编译为 class文件 每个对象都是简单的Object擦除后 例如 Foo f new Foo 编译为 class文件 反编译 则变为 Object f new Foo 那么JRE在运行时是如何调用
  • SplitView.PaneClosed 事件可用,但不适用于 PaneOpened

    根据https msdn microsoft com en us library windows apps windows ui xaml controls splitview paneheld aspxSplitView 控件没有 Pan
  • OnClientClick 正在停止回发

    我有一组 ASP NET 控件
  • 如何在 Node.js 中重定向时将数据从 Express 传递到 .ejs 文件

    我在 login ejs 文件中有登录表单 当我填写信息后单击 提交 时 如果详细信息正确 我将重定向到该页面 否则我想在 ejs 中显示密码错误的内容 以下是详细信息 这是我的 app js 文件代码 这里我发送一个 json 并将该无效
  • java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver在java中不再工作。如何解决这个问题?

    两天前还有效 现在不行了 我 100 确定编码是正确的 这是我用来连接数据库的方式 尚未找到我的问题的答案 请给我一个答案 因为我是java语言的初学者 使用jdk 7u72 public void set try Class forNam
  • Yii2:使用同一模型的两个实例进行表单验证

    我有一个预订模型 其中包含 Shipping address 和 billing address 字段 这两个字段都是模型地址 我现在想将它们打印成相同的形式 基本上效果很好 问题是两个模型的字段具有相同的 ID 例如 shipping a