Ceci génère: strong> p> Toutefois. - J'ai besoin de suivre à la place (les éléments CAPTCHA sont enveloppés dans certaines tags individuellement): strong> p> Je ne peux pas comprendre comment ferais-je cela. Puis-je y accomplir en utilisant des décorateurs personnalisés? ou Woud qui impliquent Captcha personnalisé? Strong> P> P>
3 Réponses :
C'était un peu délicat, mais j'ai préparé un élément de captcha personnalisé. J'ai aussi besoin de préparer le décorateur Captcha personnalisé. Dans les deux cas, je devais remplacer les méthodes de rendu par défaut dans les deux Espérons-le, ils seront utiles: p> my_form_element_captcha strud>: p> zend_form_element_captcha code> et
zend_form_decorator_captcha code>. J'ai aussi éliminé
zend_form_decorator_captcha_word code> car j'ai incorporé sa fonctionnalité directement dans
my_form_decorator_captcha code>. Il y avait deux raisons à cela. Le premier est que l'ordre des éléments de formulaire a été modifié, c'est-à-dire de par défaut img, entrée masqué, texte d'entrée em> dans le texte d'entrée , img, entrée masquée em>. La deuxième raison est que les étiquettes DIV et SPAN devaient être ajoutées.
class My_Form_Decorator_Captcha extends Zend_Form_Decorator_Captcha {
public function render($content) {
$element = $this->getElement();
if (!method_exists($element, 'getCaptcha')) {
return $content;
}
$view = $element->getView();
if (null === $view) {
return $content;
}
$name = $element->getFullyQualifiedName();
$hiddenName = $name . '[id]';
$textName = $name . '[input]';
$label = $element->getDecorator("Label");
if ($label) {
$label->setOption("id", $element->getId() . "-input");
}
$placement = $this->getPlacement();
$separator = $this->getSeparator();
$captcha = $element->getCaptcha();
$markup = $captcha->render($view, $element);
$hidden = $view->formHidden($hiddenName, $element->getValue(), $element->getAttribs());
$text = $view->formText($textName, '', $element->getAttribs());
// CHANGE THE ORDER OF ELEMENTS AND ADD THE div AND span TAGS.
switch ($placement) {
case 'PREPEND':
$content = '<div><span>' . $text . '</div></span>' .
'<div><span>' . $markup . $hidden . '</div></span>' .
$separator . $content;
break;
case 'APPEND':
default:
$content = $content . $separator .
'<div><span>' . $text . '</div></span>' .
'<div><span>' . $markup . $hidden . '</div></span>';
}
return $content;
}
}
OMG Marcin - Tu es mon héros. Je viens de suivre le même code essayant de déterminer comment accomplir cela. Merci un tas.
@Andre. Je suis heureux que tu aimes ça.
Marcin j'utilise captcha sans Zend_form. J'utilise le code CAPTCHA directement dans Controller, comment je change Voir html
Marcin, comment nous appelons le fichier PHTML ce rendu personnalisé
J'utilise simplement et inside vuescript: p>
réponse; CAPTCHA, soumettre et autres éléments de texte pour bootstrap 3 Syntaxe
bonne chance p>
Vous devriez probablement ajouter une explication.
Ce n'est pas une tâche banale. Par exemple, vous modifiez l'ordre des champs dans l'élément de formulaire CAPTCHA. Cette commande est codée dur. Ainsi, pour simplement changer, vous devez modifier zend_form_element_captcha ou créer votre propre version de zend_form_element_captcha.