Zend 1.11.9表单装饰器/验证码

时间:2011-07-17 21:44:36

标签: php zend-form captcha zend-decorators

在新的Zend Framework版本1.11.9中,如果我想在我的表单中使用验证码,这可能是一个简单的Figlet,验证码不会以渲染的形式显示。 有没有人遇到过这个问题,我一直在搜索并将它与之前的版本(Zend / Form / Element / Captcha.php)进行比较,我注意到的是我必须为这个元素指定Captcha装饰器。 有没有更好的解决方案,默认情况下不应该使用这个装饰器吗?

   //Add a captcha
    $this->addElement('captcha', 'captcha', array(
        'label'      => 'Please enter the 5 letters displayed below:',
        'required'   => true,
        'captcha'    => array(
            'captcha' => 'Figlet',
            'wordLen' => 5,
            'timeout' => 300
        )
    ));

这是代码,如果我在Zend 1.11.9中使用它,则不会显示capctha, 我必须要做的是将'装饰器'添加到tect capctha的选项中,并且必须指定所有装饰器。

   //Add a captcha
    $this->addElement('captcha', 'captcha', array(
        'label'      => 'Please enter the 5 letters displayed below:',
        'required'   => true,
        'captcha'    => array(
            'captcha' => 'Figlet',
            'wordLen' => 5,
            'timeout' => 300
        ),
        'decorators' => array('Captcha', 'Errors', 'Labels', etc)
    ));

3 个答案:

答案 0 :(得分:3)

我遇到了同样的问题。发布了有关Zend Framework问题跟踪器的错误报告:http://framework.zend.com/issues/browse/ZF-11609

希望很快得到解决。我检查了1.11.9更改日志:recaptcha组件发生了变化。也许这就是原因......

答案 1 :(得分:0)

我可以证实这一点。为了向您展示一些代码,在ZF 1.11.8中,这开箱即用:

        $captcha = new Zend_Form_Element_Captcha('captcha', array(
        'label' => 'Security Check',
        'required' => true,
        'captcha' => array(
            'captcha' => 'Image',
            'font' => APPLICATION_PATH . '/../data/fonts/AllerDisplay.ttf',
            'fontSize' => '24',
            'wordLen' => 6,
            'height' => '50',
            'width' => '150',
            'imgDir' => APPLICATION_PATH . '/../public/images/captcha',
            'imgUrl' => Zend_Controller_Front::getInstance()->getBaseUrl() . '/images/captcha',
        )
    ));

在1.11.9中,它不呈现图像标记。此行为不限于开头程序所述的Zend_Captcha_Image。

答案 2 :(得分:0)

我正在使用最新版本的ZF 和

$captchaElement = new Zend_Form_Element_Captcha
        (
            'signup',
            array('captcha' => array(
            'captcha' => 'Figlet',
            'wordLen' => 6,
            'timeout' => 600,       
            ))
        );

什么都不显示= - (

这是页面上的来源:

<dt id="signup-input-label"><label for="signup-input" class="required">Please type in the words below to continue</label></dt>

<dd id="signup-element">

<input type="hidden" name="signup[id]" value="9038166aac96370c73b9d474e8e20475" id="signup-id">

<input type="text" name="signup[input]" id="signup-input" value="">