我们可以在magento中使Widget选项有效吗?

rra*_*iii 5 php widget magento

如果我们在文件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>
Run Code Online (Sandbox Code Playgroud)

我的问题是,有相似的方法使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>
Run Code Online (Sandbox Code Playgroud)

Joe*_*zzi 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>
Run Code Online (Sandbox Code Playgroud)

应用程序/代码/本地/Mynamespace/Mymodule/Block/Element/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);
    }
}
Run Code Online (Sandbox Code Playgroud)

重要的是,自定义元素块扩展Mage_Adminhtml_Block_Widget_Form_Renderer_Fieldset_Element类,以便它能够在字段集中正确显示。