Проверка формы администратора - требуется загрузка файла изображения [дубликат]
Для серверной части моего расширения я пытаюсь сделать один файл обязательным. Следующий код не работает. Он отлично работает для других текстовых полей.
$fieldset->addField('image1', 'image', array(
'label' => Mage::helper('myextension')->__('Image1'),
'required' => true,
'class' => 'required-file',
'name' => 'image1'
));
Я вижу * в метке, но в поле ввода нет css-класса, кроме "input-file". Я все еще могу сохранять новые записи/сообщения без загрузки изображения.
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>");