ZendFramework - 为什么isValid的结果总是失败?

时间:2012-05-15 11:03:30

标签: php zend-framework zend-validate

我的帖子数据来自Captcha适配器如下:

  ["ffck"] => array(2) {
    ["id"] => string(32) "661db3996f5e60e71a60671496ec71a9"
    ["input"] => string(3) "dys"
  }

我的代码现在正在尝试验证,但总是失败:

  Zend_Loader::loadClass('Zend_Captcha_Image');      
  $captcha = new Zend_Captcha_Image();
  $captchaArray = array(
    'id' => $post['ffck']['id'], // valid id
    'input' =>     $post['ffck']['input'] // valid input
  );

  if ($captcha->isValid($captchaArray)) {  // FAILs!!!!
    echo "working";
  } else {
    echo "fails";
  }
  Zend_Debug::dump($post) ; // 100% valid ....

  exit;

如何解决?或者导致这种情况失败的原因是什么?

2 个答案:

答案 0 :(得分:1)

检查生成的html,你应该只有两个输入:name =“captcha [id]”和name =“captcha [input]”,如果你有第三个名字=“captcha”,那么你必须在渲染之前从captcha元素中删除viewhelper。

例:

$form->getElement('captcha')->removeDecorator("viewhelper");

答案 1 :(得分:0)

传递给CAPTCHA对象的数组应该只包含两个键,所以请尝试:

$captchaArray = $post['ffck']

而不是你目前正在做的事情。

但是您发布的代码无论如何都无效,因为您从未生成CAPTCHA图像。我想你已经减少了代码示例以保持问题简短,所以如果上述修复不起作用,请编辑你的例子以包括生成CAPTCHA图像的方式和位置。