Проверка формы администратора - требуется загрузка файла изображения [дубликат]


Для серверной части моего расширения я пытаюсь сделать один файл обязательным. Следующий код не работает. Он отлично работает для других текстовых полей.

  $fieldset->addField('image1', 'image', array(
      'label'     => Mage::helper('myextension')->__('Image1'),
      'required'  => true,
      'class'     => 'required-file',
      'name'      => 'image1'
  ));

Я вижу * в метке, но в поле ввода нет css-класса, кроме "input-file". Я все еще могу сохранять новые записи/сообщения без загрузки изображения.

Author: codelogn, 2015-09-25

1 answers

Взгляните на Проверка не работает в формах администратора

То, чего вы пытаетесь достичь, кажется невозможным с использованием типа "изображение".

Если вы взглянете на/lib/Varien/Data/Form/Element/Text.php вы заметите, что для добавления определяемого пользователем имени класса вам необходимо вызвать this->addClass('input-text'); (см./lib/Varien/Data/Form/Element/Abstract.php) который не вызывается в /lib/Varien/Data/Form/Element/Image.php

Чтобы выполнить то, что вы пытаетесь :

1) Создайте свой собственный тип, расширяющий изображение

Например

class MagePal_MyImage_Lib_Varien_Data_Form_Element_Customimage extends Varien_Data_Form_Element_Image
{


}

Затем в вашей форме

 $fieldset->addType('customtype', 'MagePal_MyImage_Lib_Varien_Data_Form_Element_Customimage');

 $fieldset->addField('field_id', 'customtype', array(
 'label' => $helper->__('Field label'),
 'name' => 'field_name'
 ));

Я думаю, что проблема может быть в/lib/Varien/Data/Form/Element/Image.php getElementHtml() смотрите $this->setClass('входной файл');

См. Пользовательский тип набора полей формы администратора Magento

2) Используйте javascript для добавления класса

$fieldsetImage->addField('logo_big', 'image', array(
        'label'     => Mage::helper('brands')->__('Logo'),
        'title'     => Mage::helper('brands')->__('Logo'),
        'class'     => 'required-entry required-file',
        'required'  => true,
        'name'      => 'logo_big',
        'value'     => $brand->getLogoBig()
    ))->setAfterElementHtml("<script type=\"text/javascript\">$('logo_big').addClassName('required-entry');</script>");
 2
Author: Renon Stewart, 2017-04-13 12:55:01