2011-04-21 81 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'); 
} 

擺脫了缺省的裝飾,並創建空白的人