Cách bạn đã trả lời ở trên không phải là một cách tiếp cận tốt.
Lớp Zend_Captcha_Image
đã cung cấp các hàm để thay đổi các biến. Bạn có thể tìm thấy các hàm trong cùng một lớp sẽ giống như thế này:
public function setDotNoiseLevel ($dotNoiseLevel)
{
$this->_dotNoiseLevel = $dotNoiseLevel;
return $this;
}
/**
* @param int $lineNoiseLevel
*/
public function setLineNoiseLevel ($lineNoiseLevel)
{
$this->_lineNoiseLevel = $lineNoiseLevel;
return $this;
}
Và cũng Zend_Captcha_Image
được mở rộng cho một lớp mô hình Mage tức là Mage_Captcha_Model_Zend
. Vì vậy, bạn có thể dễ dàng ghi đè lớp mô hình Mage này để đặt các biến đó.
Trong 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
}
Tôi đang đặt các biến đó trong hàm tạo để các thay đổi sẽ hoạt động ngay cả khi tải trang và cũng để làm mới captcha.
Sẽ tốt hơn nếu bạn ghi đè chức năng trên thay vì sửa đổi các tập tin lõi mage.