2011-04-21 99 views
1

我在zend表单中使用zend验证码。它的正常工作,但是当它创建那么它产生这样的代码:zend表单验证码问题

<img width="80" height="30" alt="Allindia captcha" src="/allindiazend/public/images/captcha/4ae305b05406c9d8b06a19ea7ff2c9d9.png"/><br/> 
<input type="hidden" name="captcha[id]" value="4ae305b05406c9d8b06a19ea7ff2c9d9" title="Security Check." id="captchas" /> 
<input type="text" name="captcha[input]" id="captchas" value="" title="Security Check." /> 

文本框是发生是由于这个<br/>的IMG下方。我不想在生成的代码中使用这个'br'标签。

这是我的代码验证码:

$captcha= new Zend_Form_Element_Captcha('captcha', array(
       'id'=>'captchas', 
       'title'=>'Security Check.', 
       'captcha' => array(
       'captcha' => 'Image', 
       'required' => true, 
       'font'=>'arial.ttf', 
       'wordlen'=>'4', 
       'width'=>'80', 
       'height'=>'30', 
       'ImgAlign'=>'left', 
       'imgdir'=>'public/images/captcha', 
       'DotNoiseLevel'=>'0', 
       'LineNoiseLevel'=>'0', 
       'Expiration'=>'1000', 
       'fontsize'=>'16', 
       'gcFreq'=>'10', 
       'ImgAlt'=>'Allindia captcha', 
       'imgurl'=>'/allindiazend/public/images/captcha', 
       'GcFreq'=>'5' 
       ))); 

任何一个可以帮助我PLZ。

+0

你改变你的验证码的生成HTML等任何装饰? – Marcin 2011-04-21 12:15:20

+0

我没有附加任何装饰。它会自动生成
。 – Chirayu 2011-04-21 12:18:54

+0

为每个Zend_Form_Element加载了默认的装饰器。看到我的回答,你怎么知道他们是谁。 – 2011-04-21 12:21:43

回答

3

这不必对验证码本身的配置做任何事情,但是使用表单元素。我猜这<br />被添加到Zend_Form_Element_Captcha的任何默认装饰器中。看看这样的装饰者连接到这样的形式:

echo '<pre>'; print_r($captcha->getDecorators()); echo '</pre>'; exit; 

你会看到所有装饰。尝试一步一步移除所有装饰器,看看其中哪些产生了<br />。彻底删除它,或者如果有必要用您自己的修饰器覆盖它,省略<br />

+0

没有得到如何?请解释。 – 2011-04-21 12:58:15

0

我平时做这样的事情

foreach($this->getElements() as $element) { 
    $element->removeDecorator('HtmlTag') 
     ->removeDecorator('Label') 
     ->addDecorator('Label'); 
} 

摆脱了缺省的装饰,并创建空白的人