On Tue, Jan 27, 2009 at 3:24 PM, Deepak Shrestha <[email protected]> wrote: > 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
Sorry I forgot to mention that I am using current version of ZF 1.7 Thanks -- ======================= Registered Linux User #460714 Currently Using Fedora 8, 10 =======================
