Magento - 为管理员客户编辑添加新标签&包括模型的形式

时间:2015-02-20 09:12:46

标签: magento

我正在尝试向Magento管理员的“客户编辑”页面添加新标签,并在该标签上有一个表单,该表单使用模型加载和保存数据。

我让标签工作正常(但我很确定这种做法非常糟糕):

萨勒曼/ Tabtest /砌块/ Adminhtml /客户/编辑/标签/ action.php的     

    public function __construct()
    {
        $this->setTemplate('tabtest/action.phtml');
    }

    public function getCustomtabInfo(){
        $customer = Mage::registry('current_customer');
        $customtab='My test tab';
        return $customtab;
    }
    /**
     * Return Tab label
     *
     * @return string
     */
    public function getTabLabel()
    {
        return $this->__('Sulman Test Tab');
    }
    /**
     * Return Tab title
     *
     * @return string
     */
    public function getTabTitle()
    {
        return $this->__('Sulman Test Tab Title');
    }
    /**
     * Can show tab in tabs
     *
     * @return boolean
     */
    public function canShowTab()
    {
        $customer = Mage::registry('current_customer');
        return (bool)$customer->getId();
    }
    /**
     * Tab is hidden
     *
     * @return boolean
     */
    public function isHidden()
    {
        return false;
    }
    /**
     * Defines after which tab, this tab should be rendered
     *
     * @return string
     */
    public function getAfter()
    {
        return 'tags';
    }
}

然后我的etc / config.xml看起来像这样:

<?xml version="1.0" encoding="UTF-8"?>
<config>
    <modules>
        <Sulman_Tabtest>
            <version>0.0.1</version>
        </Sulman_Tabtest>
    </modules>
    <adminhtml>
        <layout>
            <updates>
                <tabtest>
                    <file>tabtest.xml</file>
                </tabtest>
            </updates>
        </layout>
    </adminhtml>
    <admin>
        <routers>
            <adminhtml>
                <args>
                    <modules>
                        <sulman_tabtest before="Mage_Adminhtml">Sulman_Tabtest_Adminhtml</sulman_tabtest>
                    </modules>
                </args>
            </adminhtml>
        </routers>
    </admin>
    <global>
        <blocks>
            <tabtest>
                <class>Sulman_Tabtest_Block</class>
            </tabtest>
        </blocks>
    </global>
</config>

最后我的tabtest / action.phtml看起来像这样(可怕的......):

<?php
$customer = Mage::registry('current_customer');
$read = Mage::getSingleton('core/resource')->getConnection('core_read');
$sql = "SELECT * FROM mytable WHERE entity_id = '".$customer->getId()."'";
$results = $read->fetchAll($sql);
?>
<div id="customer_info_tabs_customer_edit_tab_action_content">
    <div class="entry-edit">
        <div class="entry-edit-head">
            <h4 class="icon-head head-edit-form fieldset-legend">My title</h4>
        </div>
        <div id="group_fields4" class="fieldset fieldset-wide">
            <div class="hor-scroll">
                <h3>My title</h3>
                <div>
                    <form action="<?php echo $this->getUrl('adminhtml/tabtest/update/', array('customer_id' => $customer_id)); ?>;" method="get">
                        <?php foreach($results as $result):?>
                            <p>
                                <strong><?php echo $result['email']?></strong><br/>
                                Max Order Amount: <input type="text" name="max_order_amount" value="<?php echo $result['max_order_amount']?>"><br/>
                            </p>
                        <?php endforeach; ?>
                        <input type="submit" value="Post This Form"/>
                    </form>
                </div>
            </div>
        </div>
    </div>
</div>

然后我将设置一个updateAction控制器来处理帖子,更新数据库等并重定向......

坦率地说,这一切看起来都是一种非常糟糕的方式...... 我已经在谷歌和这里找到了但却无法真正找到解决方案。我也试图通过Magento Core追踪。我也试图找到一个Magento连接模块,这样做,所以我可以研究它!

我真的需要一个tab_form并以这种方式设置它,但我找不到这样做的方法。

有人指出我正确的方向吗?感谢。

1 个答案:

答案 0 :(得分:-1)

您可以尝试应用以下文章中提供的代码。

http://mydons.com/how-to-add-custom-tabs-to-magento-customer-edit-page/