Hi,

Didn't get any help from my last post so I went through documentation
and tried to understand as much I can but can't find a way to display
captcha image in Zend_Form using default behavior of Zend Framework's
MVC. AFAIK (with my current knowledge), my code is correct.

This is the code snippet in  my [application/forms/myform.php]
===============================================

        //first create an image type captcha
        $captchaimg = New Zend_Captcha_Image('captchaimg');
        $captchaimg->setFont("../application/captcha/fonts/tahoma.ttf");
        $captchaimg->setImgDir("../application/captcha/images");
        $captchaimg->setImgUrl("../application/captcha/images");
        $captchaimg->setWordlen('6');

        //create user input for captcha and include the captchaimg in form
        $adcaptcha = New Zend_Form_Element_Captcha('adcaptcha', array(
            'captcha' => $captchaimg));
        $adcaptcha->setLabel('Please enter the 5 letters displayed below:');
        $adcaptcha->setRequired(true);
        $adcaptcha->addErrorMessage('Entered value did not match with
displayed image.');

$this->addElements( array(....$adcaptcha));
=================================================

My view script:
================
<?= $this->form ?>
================


dirctory structure for captcha image is:
=============================
application
    - captcha
        - fonts
        - images (for genreated images)
=============================


My Observation
===============
1. There is no captcha image when form renders. However, I can see
image being generated in 'application/captcha/images' folder.

2. Trying to post the empty form (expecting that my custom error
message will be displayed) gives me empty error message string with
just a round bullet list in the captcha section but other text input
fields show the correct error messages.

3. Using view source in the browser, i got this about captcha

*********************************************
<dd>
<img alt="" 
src="../application/captcha/images/641aa987b887cbefb441f33e194a45b9.png"/><br/>
<input type="hidden" name="adcaptcha[id]"
value="641aa987b887cbefb441f33e194a45b9" helper="formText"
id="adcaptcha-id" />
<input type="text" name="adcaptcha[input]" id="adcaptcha-input"
value="" helper="formText" /></dd>

**********************************************
===============


My Questions:
================
1. The image url was passed to the brower but why it didn't get
rendered in the form?
2. Is this the bug or feature? If it is the feature, how do I make the
image appear in my form using the code I have posted above? what are
the additional things I need to consider?
================


Partial answer (best guess) to my own question:
====================================
1. Probably form is forgetting to call some default rendering function
of Zend_Captcha to render it (or ???).  However custom approach (with
custom form) as shown in zend documentation
[http://framework.zend.com/manual/en/zend.captcha.operation.html] and
the one I found in recent blog [http://www.tfountain.co.uk/] works
because it explicitly calls "echo $captcha->render($view);" method.
====================================


But I want to stick with ZF's default MVC behaviors and want to
understand how these pieces fit together before I can understand and
do customized stuffs. So I need to show the captcha image suing zend
form.

Can somebody guide me about whether it is bug/feature? and any workaround?

Thanks a lot


-- 
=======================
Registered Linux User #460714
Currently Using Fedora 8, 10
=======================

Reply via email to