Personalize a aparência do captcha nativo do magento. Alterar a quantidade de linhas e pontos


Respostas:


11

A maneira como você respondeu acima não é uma boa abordagem.

A classe Zend_Captcha_Imageforneceu funções para alterar as variáveis. Você pode encontrar as funções na mesma classe que serão mais ou menos assim:

public function setDotNoiseLevel ($dotNoiseLevel)
{
    $this->_dotNoiseLevel = $dotNoiseLevel;
    return $this;
}
/**
 * @param int $lineNoiseLevel
 */
public function setLineNoiseLevel ($lineNoiseLevel)
{
    $this->_lineNoiseLevel = $lineNoiseLevel;
    return $this;
}

E também Zend_Captcha_Imageé estendido a uma classe de modelo Mage, ie Mage_Captcha_Model_Zend. Portanto, você pode facilmente substituir essa classe de modelo Mage para definir essas variáveis.

Em Mage_Captcha_Model_Zend:

public function __construct($params)
{
    if (!isset($params['formId'])) {
        throw new Exception('formId is mandatory');
    }
    $this->_formId = $params['formId'];
    $this->setExpiration($this->getTimeout());

    $this->setDotNoiseLevel(10);     // Added code
    $this->setLineNoiseLevel(0);     // Added code
}

Estou definindo essas variáveis ​​no construtor para que as alterações funcionem mesmo no carregamento da página e também na atualização do captcha.

Será melhor que você substitua a função acima em vez de modificar os arquivos principais do mage.



3

Para Magento 2: Vá para vendor \ magento \ zendframework1 \ library \ Zend \ Captcha \ Image.php

Você encontrará abaixo as funções deste arquivo que podem ser usadas para personalizar a imagem captcha.

     /**
     * Set dot noise level
     *
     * @param int $dotNoiseLevel
     * @return Zend_Captcha_Image
     */
    public function setDotNoiseLevel ($dotNoiseLevel)
    {
        $this->_dotNoiseLevel = $dotNoiseLevel;
        return $this;
    }

    /**
     * Set line noise level
     *
     * @param int $lineNoiseLevel
     * @return Zend_Captcha_Image
     */
    public function setLineNoiseLevel ($lineNoiseLevel)
    {
        $this->_lineNoiseLevel = $lineNoiseLevel;
        return $this;
    }

você pode alterar os valores desta função dos números de linha 122 e 129.

/**
 * Number of noise dots on image
 * Used twice - before and after transform
 *
 * @var int
 */
protected $_dotNoiseLevel = 100;
/**
 * Number of noise lines on image
 * Used twice - before and after transform
 *
 * @var int
 */
protected $_lineNoiseLevel = 5;

Obrigado Dinesh por compartilhar isso. Será melhor se você adicionar uma nova pergunta e postar esta resposta como resposta. Será útil para quem está procurando.
Jaimin Sutariya
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.