Zend Validate - 你如何从不同的子表单传递上下文值?

Posted

技术标签:

【中文标题】Zend Validate - 你如何从不同的子表单传递上下文值?【英文标题】:Zend Validate - How do you pass context values from a different subform? 【发布时间】:2010-08-17 13:48:33 【问题描述】:

我已将一个表单拆分为 3 个子表单,对于其中一个元素,在最后一个子表单中,我创建了一个扩展 Zend_Validator_Abstract 的验证器。

此验证器需要检查第二个 SubForm 上的值是否不为空。但是,此值不会出现在第三个子表单中元素的 $context 数组中。

$context 中跨子表单提供此值的明智方法是什么?

...

经过一番思考,我能想到的唯一方法是将父表单的引用传递给验证器的构造函数,尽管它破坏了封装。

【问题讨论】:

【参考方案1】:

您也可以尝试覆盖 form object isValid() 方法并利用那里可用的 $data 变量。

例如:

<?php 
class MyForm extends Zend_Form 
    public function isValid($data) 
        // check $data['fieldname'] or add a new validator here, then...
        return parent::isValid($data);
    

【讨论】:

你将如何结合 Zend_form 使用 Zend_Filter_Input? Zend_Filter_Input 看起来像一个条带化的 Zend_Form,它纯粹处理过滤器和验证器。如果您有一个包含许多装饰器和复杂验证规则的复杂表单,它看起来很有用。您可以在不破坏基本形式的情况下分离责任或提供替代过滤器和验证。为小费干杯 请注意 - 不清楚您是在谈论 $myform->isValid() 还是 $myvalidator->isValid()。我花了一段时间才弄清楚你指的是前者 @asgeo:谢谢……我对你的评论投了赞成票,因为我忽略了这一点。立即编辑。

以上是关于Zend Validate - 你如何从不同的子表单传递上下文值?的主要内容,如果未能解决你的问题,请参考以下文章

Hibernate:具有两个不同的 ManyToOne 关系的子表

如何编写一个查询,根据 ms 访问的子表中的外键获取信息?

Zend Framework 调用表单作为表单中的子表单

SQL:从最近的子表条目中选择列

如何同步hasMany关系上的子表数据?

如何将嵌套的子表值与父表行关联并插入子表值对应于php中的父表行