显然,这是一个常见问题,但是我无法弄清楚如何显示Zend Captcha图像,它将创建图像并创建隐藏元素,但是image标记从不显示,有人可以解??
这是无效的代码:
<?php
class Application_Form_Contact extends Zend_Form
{
public function init()
{
/* Form Elements & Other Definitions Here ... */
$this->setAction('/contact/')->setMethod('post');
$element = new Zend_Form_Element_Text('name');
$element->setLabel('Name:')
->setRequired(true)
->addFilter('HtmlEntities');
$this->addElement($element);
$element = new Zend_Form_Element_Text('phone');
$element->setLabel('Phone:')
->setRequired(true)
->addFilter('HtmlEntities');
$this->addElement($element);
$element = new Zend_Form_Element_Text('email');
$element->setLabel('Email:')
->setRequired(true)
->addValidator('EmailAddress', true)
->addFilter('StripTags')
->addFilter('HtmlEntities')
->addFilter('StringToLower')
->addFilter('StringTrim');
$this->addElement($element);
$comments = $this->createElement('textarea', 'comments')
->setLabel('Comments:')
->setRequired(true)
->setOptions(array('style'=>'width:95%;'))
->addFilter('StripTags')
->addFilter('HtmlEntities')
->addFilter('StringTrim');
$this->addElement($comments);
$captcha= new Zend_Form_Element_Captcha('captcha', array(
'id'=>'captchas',
'title'=>'Security Check.',
'captcha' => array(
'captcha' => 'Image',
'required' => true,
'font'=> PUBLIC_PATH . '/verdana.ttf',
'wordlen'=>'4',
'width'=>'80',
'height'=>'50',
'ImgAlign'=>'left',
'imgdir'=> PUBLIC_PATH . '/images/captcha/',
'DotNoiseLevel'=>'0',
'LineNoiseLevel'=>'0',
'Expiration'=>'1000',
'fontsize'=>'16'
)));
$this->addElement($captcha);
$submit = new Zend_Form_Element_Submit('submit');
$submit->setLabel('Send');
$this->addElement($submit);
}
}
我只有两个想法可能会有所帮助:
它需要使用TrueType或Freetype支持编译的GD扩展。 当前,Zend_Captcha_Image适配器只能生成PNG图像。
setImgUrl($ imgUrl)和getImgUrl()允许您指定用于HTML标记的CAPTCHA图像的相对路径。 默认值为“ / images / captcha /”。
也仅出于信息目的,您不需要设置所需的元素,因为始终需要验证码。
如前所述,验证码适配器本身充当元素的验证器。 此外,不使用NotEmpty验证程序,并且将该元素标记为必需。 在大多数情况下,您无需执行任何其他操作即可在表单中显示验证码。
尝试将验证码编辑成裸露的骨头
$captcha = new Zend_Form_Element_Captcha('Captcha', array(
'captcha' => array(
'captcha' => 'Image',
'wordLen' => 6,
'timeout' => 300,
'width' => 300,
'height' => 100,
'imgUrl' => '/captcha',
'imgDir' => APPLICATION_PATH . '/../public/captcha',
'font' => APPLICATION_PATH . '/../public/fonts/LiberationSansRegular.ttf')));
只要让任何东西都可以工作,然后再添加所需的东西,直到找到问题。 我怀疑您的其中一条路径有问题。 从APPLICATION_PATH常量开始,如果感觉更好,请更改为PUBLIC_PATH。
检查您的文件权限; 在写映像之前,我必须授予组写访问权限。