【问题标题】:Zend Form Error messages are not returning from functionsZend Form 错误消息没有从函数返回
【发布时间】:2012-08-07 07:10:44
【问题描述】:

在我的模型中

$form = new \Zend_Form();
$form->addElement('text', 'name', array(
        'validators'    => array(
            array('NotEmpty', true),
            array("stringLength", true, array(1,40))
        ),
        'required'      => true,
        'label'         => "Name",
    ));
return $form;

在我的控制器中,调用了上面的模型函数

if($form->isValid($_POST)) {
  ....
} else {
$form = Product::getForm();
print_r($form->getErrors());
print_r($form->getErrorMessages());
print_r($form->getMessages());
}

我正在使用 Zend 框架。

这里在表单的name字段中,超过40个字符的字符串需要显示错误信息。

我尝试使用 getErrors()getErrorMessages() 获取错误。但是这些功能都没有给我错误。 它在打印这些函数时返回一个空数组。

请帮我解决这个问题...

【问题讨论】:

  • 没问题,低的时候值得一提。

标签: php zend-framework zend-form


【解决方案1】:

为什么要打这个电话:

$form = Product::getForm();

所以你用它的错误信息覆盖了旧的 $form 变量。尝试不使用这些行。

【讨论】:

  • 为相关模型提供的代码是function getForm()
  • @Justin:Thargor 是对的。您的控制器序列以 $form 实例开始,但在您调用 $form = Product::getForm() 之后,您将破坏旧表单并创建新表单。
【解决方案2】:

在您在表单上调用isValid() 之前,错误消息不会出现,就像这样

$form = Product::getForm();

if(!$form->isValid($_POST))
{
    print_r($form->getErrors());
    print_r($form->getErrorMessages());
    print_r($form->getMessages());        
}

【讨论】:

  • 代码已经是那种格式了...我已经编辑了问题。
  • 啊,原来的问题不是那种格式。您的Product::getForm() 是否覆盖isValid()?还是其他任何功能?如果您将该字段留空,是否会触发 NotEmpty 错误?
  • 为模型提供的代码是function getForm()。我认为它不会覆盖$form
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-20
  • 1970-01-01
  • 1970-01-01
  • 2015-08-02
  • 1970-01-01
  • 2013-06-16
相关资源
最近更新 更多