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:使用同一模型的两个实例进行表单验证 的相关文章

  • 如何将对象(模型类型对象)插入到 Laravel 中 Collection 对象的特定索引号处?

    我读过戴尔 里斯的代码明亮 https daylerees com codebright 了解更多关于雄辩的信息Collection在 Laravel 中使用 还做了一些其他研究 但找不到我正在寻找的答案 我想插入一个对象 Model输入对
  • php 中 php.ini 的 log_errors 和 error_log

    我正在尝试通过 php ini 更改 php ini 中的设置 我的问题是 当出现错误时 它不会放入文件 error log txt 中 那么我做错了什么 这是我的代码 Settings for php ini ini set sessio
  • 如何改进 PHP 分页算法?

    我正在研究 PHP 中的分页算法 我可以猜测它需要改进的空间 所以我想对如何改进它有一些想法 无论是从 UI UX 的角度清理代码本身 还是你能想到的任何其他东西 该算法应输出如下所示的分页 1 2 3 6 7 8 97 98 99 or
  • 使用 ImapMailbox.php 按日期对 Imap 邮箱进行排序

    我有一个客户支持系统 它会在收到电子邮件时创建电子邮件 我曾经使用后缀和特殊配置来获取电子邮件以添加额外的功能 例如 我想包含从电子邮件发送的附件 系统不会执行此操作 而是创建一封带有主题的电子邮件 因此我可以通过匹配主题来包含附件 我使用
  • PHP 自定义会话处理程序问题 (PHP 7.1)

    我刚刚在计算机上从 PHP 7 0 迁移到 PHP 7 1 当前版本的 WAMP 的全新 全新安装 它似乎破坏了自定义会话处理程序中的某些内容 该处理程序应该将会话保存到数据库而不是使用文件系统 自定义处理程序类是 class db ses
  • 这是过滤数据并防止 SQL 注入和其他攻击的安全方法吗?

    我创建了两个简单的函数来在插入数据进入 mysql 查询之前对其进行过滤 对于表单字段 我还使用正则表达式来单独检查每个字段 Form filter function filter var HTML is not allowed var s
  • 使用 CodeIgniter 加载视图文件夹外的视图

    我需要从以下范围之外加载视图 this gt load gt view 这似乎是从base application views目录 如何从外部访问视图 application 目录 我想我将不得不延长CI Loader class这是最好的
  • 提交简单 PHP 表单时出现禁止错误

    我有一个不复杂的问题 这似乎比应有的更复杂 我有一个简单的表单 用于向网站添加内容 有些字段需要输入html 然而 当您在表单的不同部分输入某些 html 元素时 它会认为它讨厌您并抛出禁止的 403 错误 这是下面的表格
  • 如何在PHP中完成http响应并进行进一步处理?

    就我而言 我需要向客户端回显一个标志并发送一封电子邮件 现在客户端需要等待电子邮件发送 但我想把这两个步骤分开 该怎么做呢 你可以看一下异步运行 PHP 任务 https stackoverflow com questions 858883
  • 在 PHP 中使用可变变量是不好的做法吗?

    例如 一个简单的MVC类型系统 api class method使用重写为 PHP 变量 htaccess nginx conf 然后做类似的事情
  • 如何使 Active Record 连接返回唯一的对象?

    我有一个简单的查询需求 查找自2013年1月1日以来下过订单的用户列表 在 SQL 中 这是一个非常简单的查询 但我正在使用 Rails 和 Active Record 所以我写道 User joins orders where order
  • 如何捕获反序列化异常?

    PHP 是否可以在以下情况下捕获异常 unserialize 产生错误 一个简单的方法是 ret unserialize foo if ret null Error case 但这不是最现代的解决方案 最好的方法是像前面提到的那样有一个自定
  • php 包含打印 1

    我编写了以下代码 当我将 include 函数与旨在输出到页面的函数 例如 或 echo include foo php 结合使用时 它会返回包含内容 但在已包含的内容后面带有 1 echo include foo php 应该 inclu
  • 从 PHP 启动守护进程

    对于网站 我需要能够启动和停止守护进程 我目前正在做的是 exec sudo etc init d daemonToStart start 守护进程已启动 但 Apache PHP 挂起 做一个ps aux透露sudo它本身变成了僵尸进程
  • PHP 搜索部分字符串

    如何在键入时搜索部分字符串 不使用 MySQL 例如 MySQL 中的 LIKE 函数 但在搜索字符串时使用 PHP 例如 但这显然行不通 但是有没有一个函数可以搜索部分字符串 那太好了 EDIT 如果它在数组中怎么办 如果我使用 strp
  • 如何检测iPhone是否有视网膜显示屏?

    如何检测 iPhone 是否配备视网膜显示屏 有靠谱的办法吗 要么是纯 PHP 要么最好是 Zend Framework 方式来执行此操作 我通过这个弄清楚了 var retina window devicePixelRatio gt 1
  • 如何让php页面从html页面接收ajax post

    我有一个非常简单的表单 其中有一个名字输入字段 我捕获了表单数据 并使用标准 jQuery 发布方法通过 ajax 将其传输到 PHP 页面 但是 我根本无法从 PHP 页面获得任何在服务器端捕获数据的响应 我不确定我做错了什么或缺少什么
  • 使用 yaml 路由描述时如何在运行时获取 Symfony2 中的路由名称?

    在这里你可以找到我的n关于 Symfony2 的第一个问题 我正在与一个分页捆绑 https github com makerlabs PagerBundle wiki使用中提供的路由名称routing yml文件 从我的角度来看 这种方法
  • Nginx 安全链接模块不适用于 php 文件,但适用于静态文件

    我在用http nginx org en docs http ngx http secure link module html http nginx org en docs http ngx http secure link module
  • 突出显示单词并提取其附近文本的函数

    我有一个文本例如 Etiam porta semmalesuada magna mollis euismod 整数取数 ante venenatis dapibus posuere velit aliquet 埃蒂亚姆 门塔 塞姆 male

随机推荐

  • 偶数斐波那契数之和 < 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