我们可以在magento中进行窗口小部件选项验证吗?

时间:2014-08-13 16:29:44

标签: php magento widget

如果我们在文件system.xml中添加后端配置,我们可以使用如下所示的validate标记为每个字段添加验证:

<duration>
   <label> ...</label>
   <frontend_type >text</frontend_type>
   <validate>required-entry validate-number</validate>
   <source_model>adminhtml/system_config_source_yesno</source_model>
   <sort_order>70</sort_order>
   <show_in_default>1</show_in_default>
   <show_in_website>1</show_in_website>
   <show_in_store>1</show_in_store>
</duration>

我的问题是,在magento中使用相似的方法来制作窗口小部件选项吗? 例如,在widget.xml文件中这样:

<widget type="common/widget">
        <name>new widget</name>
        <description>new widget</description>
        <parameters>
            <template>
                <visible>0</visible>
                <value>template.phtml</value>
            </template>
            <after translate="label">
                <visible>1</visible>
                <label>...</label>
                <type>text</type>
                <validate>required-entry validate-number</validate>
            </after>
</parameters>
</widget>

2 个答案:

答案 0 :(得分:1)

您无法通过XML直接执行此操作。但是,您可以创建自定义块,在那里设置验证css类,并将其用作widget.xml中的类型。

应用程序/代码/本地/ myNameSpace对象/ Mymodule中的/ etc / widget.xml:

<somefield>
    <required>1</required>
    <visible>1</visible>
    <label>Some number</label>
    <type>mynamespace_mymodule/element_numeric</type>
</somefield>

应用程序/代码/本地/ myNameSpace对象/ Mymodule中/砌块/元素/ Numeric.php:

class Mynamespace_Mymodule_Block_Element_Numeric extends Mage_Adminhtml_Block_Widget_Form_Renderer_Fieldset_Element
{
    public function render(Varien_Data_Form_Element_Abstract $element)
    {
        $element->setType('text');
        $element->addClass('validate-digits');
        parent::render($element);
    }
}

自定义元素块扩展类 Mage_Adminhtml_Block_Widget_Form_Renderer_Fieldset_Element 非常重要,这样它才能在字段集中正确显示。

答案 1 :(得分:1)

@Joe Mizzi方法渲染应该返回一个值

class Mynamespace_Mymodule_Block_Element_Numeric extends Mage_Adminhtml_Block_Widget_Form_Renderer_Fieldset_Element
{
    public function render(Varien_Data_Form_Element_Abstract $element)
    {
        $element->setType('text');
        $element->addClass('validate-digits');
        return parent::render($element);
    }
}