Personalizza l'aspetto captcha nativo di magento. Cambia la quantità di linee e punti


Risposte:


11

Il modo in cui hai risposto sopra non è un buon approccio.

La classe Zend_Captcha_Imageha fornito funzioni per modificare le variabili. Puoi trovare le funzioni nella stessa classe che sarà qualcosa del genere:

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

E Zend_Captcha_Imagesi estende anche a una classe di modelli Mage, ad es Mage_Captcha_Model_Zend. Quindi, puoi facilmente ignorare questa classe del modello Mage per impostare quelle variabili.

In 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
}

Sto impostando quelle variabili nel costruttore in modo che le modifiche funzionino anche per il caricamento della pagina e anche per l'aggiornamento captcha.

Sarà meglio se si sovrascrive la funzione precedente invece di modificare i file core di mage.



3

Per Magento 2: vai al fornitore \ magento \ zendframework1 \ library \ Zend \ Captcha \ Image.php

Di seguito troverai le funzioni in questo file che possono essere utilizzate per personalizzare l'immagine 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;
    }

è possibile modificare i valori di questa funzione dal numero di riga 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;

Grazie Dinesh per averlo condiviso. Sarà meglio se aggiungi una nuova domanda e pubblichi questa risposta come risposta. Sarà utile per chi lo sta cercando.
Jaimin Sutariya,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.