Добавьте функцию mailto в поле администратора

Как я могу заполнить новое поле в админке, содержащее функцию mailto

$fieldset->addField('email', 'link', array(
    'label'     => Mage::helper('mumodule')->__('Email'),
    "target"=>"_blank",
    'mailto' => Mage::registry('mumodule')->getData('email'),
    'class'     => 'required-entry',
    'required'  => true,
    'name'      => 'title',
    ));

используя этот способ я не могу добавить функциональность.

Можно ли добавить новые поля с функциональностью mailto?

2 ответа

Решение

я достигаю простым способом

$fieldset->addField('email', 'link', array(
        'label'     => Mage::helper('mumodule')->__('Email'),
        'target'    => '_blank',
        'href'      => 'mailto:' . urlencode(Mage::registry('mumodule')->getData('email')),
        'class'     => 'required-entry',
    ));

mailto: является частью URL, поэтому его следует назначить в атрибуте href:

Вы должны создать свой собственный рендерер поля формы. Для этого вам понадобится пользовательский модуль. Если вы не знаете, как это сделать, вот хорошая отправная точка: http://www.magentocommerce.com/wiki/5_-_modules_and_development/0_-_module_development_in_magento/how_to_create_an_admin_form_module

Создайте новый файл в app / code / [local / community] /MyCompany/MyModule/Varien/Data/Form/Element/Mailto.php со следующим содержимым:

class MyCompany_MyModule_Varien_Data_Form_Element_Mailto extends Varien_Data_Form_Element_Abstract {
public function __construct($data) {
    parent::__construct($data);
    $this->setType('link');
}

public function getElementHtml() {
    $html = $this->getBeforeElementHtml();
    if ($this->getValue()) {
        $html .= '<a href="mailto:'.$this->getValue().'"></a> ';
    }
    $html .= $this->getAfterElementHtml();
    return $html;
}

После этого перейдите к файлу формы и добавьте его в fieldset:

$fieldset->addType('mailto','MyCompany_MyModule_Varien_Data_Form_Element_Mailto');

$fieldset->addField('email', 'mailto', array(
    'label'     => Mage::helper('mymodule')->__('Email'),
    'name'      => 'email',
));

Конечно, вы должны заменить пространство имен MyCompany на пространство имен, которое вы уже используете в модуле, и MyModule на имя вашего модуля. Также не забудьте поместить файл в пул кода, где ваш модуль уже существует: local / community

Другие вопросы по тегам