Zend Framework: проблема с капчей - PullRequest
1 голос
/ 23 июля 2011

Я использую следующий код для генерации CAPTCHA:

$captcha = $this->createElement('captcha', 'captcha',
    array('required' => true,
    'captcha' => array('captcha' => 'Image',
    'font' => 'resource/fonts/arial.ttf',
    'fontSize' => '24',
    'wordLen' => '5',
    'height' => '50',
    'width' => '150',
    'imgDir' => 'resource/captcha',
    'imgUrl' => 'resource/captcha',
    'gcFreq'=>'10',    
    'dotNoiseLevel' => '10',
    'lineNoiseLevel' => '2')));

    $captcha->setLabel('Captcha');

Сгенерирован следующий код:

<label for="captcha-input" class="login_label required">Captcha</label>
<img width="150" height="50" alt="" src="captcha/eb3a592c8b1c7a71b0c7ce5179422be2.png" />
<input type="hidden" name="captcha[id]" value="eb3a592c8b1c7a71b0c7ce5179422be2" id="captcha-id">
<input type="text" name="captcha[input]" id="captcha-input" value="">
<input type="text" name="captcha" id="captcha" value="eb3a592c8b1c7a71b0c7ce5179422be2">

Может кто-нибудь подсказать мне, как удалить дополнительные поля ввода текста, такие как

<input type="text" name="captcha" id="captcha" value="eb3a592c8b1c7a71b0c7ce5179422be2">

Заранее спасибо

Ответы [ 4 ]

3 голосов
/ 05 июля 2012

Важно сделать

$this->getElement('captcha')->removeDecorator("viewhelper");

после вы включили ElementsDecorators (который устанавливает ViewHelper на первое место - не удаляйте это, это все равно требуется)

Для меня это выглядит так:

$this->setElementDecorators(array(
    'ViewHelper',
    'Errors',
    array(array('data' => 'HtmlTag'), array('tag' => 'td')),
    array('Label', array('tag' => 'td')),
    array(array('row' => 'HtmlTag'), array('tag' => 'tr'))
));

$this->getElement('captcha')->removeDecorator("viewhelper");
0 голосов
/ 31 октября 2011

Вы можете попробовать это:

$this->getElement('captcha')->removeDecorator("viewhelper");
0 голосов
/ 15 ноября 2011

У меня была такая же проблема.Удалите декоратор «ViewHelper», и капча будет отображаться правильно.

0 голосов
/ 23 июля 2011

Этот ввод не является «дополнительным» - он необходим.

Когда проверяется CAPTCHA, значение этого поля используется для поиска правильного решения CAPTCHA, которое затем сравнивается с пользователемinput.

Без этого поля ваша CAPTCHA сломается.

Почему вы хотите удалить его в первую очередь?

...