Sesuaikan penampilan captcha asli magento. Ubah jumlah garis dan titik


Jawaban:


11

Cara Anda menjawab di atas bukanlah pendekatan yang baik.

Kelas Zend_Captcha_Imagetelah menyediakan fungsi untuk mengubah variabel. Anda dapat menemukan fungsi-fungsi di kelas yang sama yang akan menjadi seperti ini:

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

Dan juga Zend_Captcha_Imagediperluas ke kelas model Mage yaitu Mage_Captcha_Model_Zend. Jadi, Anda dapat dengan mudah mengganti kelas model Mage ini untuk mengatur variabel-variabel tersebut.

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

Saya mengatur variabel-variabel tersebut dalam konstruktor sehingga perubahan akan berfungsi bahkan untuk memuat halaman dan juga untuk menyegarkan captcha.

Akan lebih baik jika Anda mengganti fungsi di atas daripada memodifikasi file inti mage.



3

Untuk Magento 2: Buka vendor \ magento \ zendframework1 \ library \ Zend \ Captcha \ Image.php

Anda akan menemukan fungsi di bawah ini dalam file ini yang dapat digunakan untuk menyesuaikan gambar 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;
    }

Anda dapat mengubah nilai fungsi ini dari nomor baris 122 dan 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;

Terima kasih Dinesh untuk berbagi ini. Akan lebih baik jika Anda menambahkan pertanyaan baru dan memposting jawaban ini sebagai jawabannya. Ini akan sangat membantu bagi mereka yang mencarinya.
Jaimin Sutariya
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.