удалить сообщение об ошибке по умолчанию из поля изображения Zend формы - PullRequest
2 голосов
/ 29 мая 2011

привет, я использую элемент изображения Zend в своем проекте, я проверил поле.Если я выбираю не изображение и отправляю форму, отображается сообщение об ошибке по умолчанию, я пытался удалить его и добавить пользовательское сообщение с помощью

    $image->removeDecorator('Error');
    $image->addErrorMessage('Invalid image');

, но оно не работает.сообщение об ошибке:

Файл '.zfproject.xml' не является изображением, обнаружено 'application / xml'

Как добавить собственное сообщение об ошибке и удалитьсообщение об ошибке по умолчанию, пожалуйста, помогите ....

это мой код

    $image = new Zend_Form_Element_File('image');
    $image->setLabel('Image URL :');
    $image->setDestination($imagePath);
    $image->addValidator('IsImage', false);
    //$image->removeDecorator('Error');
    //$image->addErrorMessage('tester');

Ответы [ 2 ]

1 голос
/ 29 мая 2011

Сообщение валидатора хранится в Zend / Validate / File / IsImage.php здесь:

    protected $_messageTemplates = array(
    self::FALSE_TYPE   => "File '%value%' is no image, '%type%' detected",
    self::NOT_DETECTED => "The mimetype of file '%value%' could not be detected",
    self::NOT_READABLE => "File '%value%' is not readable or does not exist",
);

Самый простой способ обойти это подкласс валидатора:

class Custom_Validate_File_IsImage extends Zend_Validate_File_IsImage
{
    /**
     * @var array Error message templates
     */
    protected $_messageTemplates = array(
        self::FALSE_TYPE   => "Customize your message to whatever you want to right here.",
        self::NOT_DETECTED => "The mimetype of file '%value%' could not be detected",
        self::NOT_READABLE => "File '%value%' is not readable or does not exist",
    );
}

ииспользуйте вместо этого пользовательский валидатор:

$image->addValidator(new Custom_Validate_File_IsImage());
0 голосов
/ 30 мая 2011

Если вас не интересуют разные сообщения об ошибках правила проверки и вы хотите отображать только общее сообщение об ошибке, вы можете просто сделать

$element->addErrorMessage('Your error message');
...