【问题标题】:How to give reference to magento register blocks?如何参考magento寄存器块?
【发布时间】:2015-03-20 12:37:42
【问题描述】:

让我们考虑一下我正在使用注册表单,我想在其中添加新字段,例如“公司”。在这里,我知道在/customer/form/register.phtml 文件中创建模块和添加字段的所有过程,但我想以不同的方式进行。

这是我的查询,我想在 xml 文件的帮助下创建我的新 xml 文件并使用新的 .phtml 文件引用 customer_form_register 块(无需编辑 @987654326 @) 与创建模块的所有后端过程相同。

【问题讨论】:

    标签: magento magento-1.9


    【解决方案1】:

    问题

    我现在了解到您的问题是询问您是否可以在不编辑 customer/form/register.phtml 模板的情况下在客户注册表单上插入其他表单字段。不幸的是,在 Magento 的布局中,我不相信目前有一种方法可以在另一个引用中创建对块的引用,除非来自同一个引用。因此,虽然仅使用布局 XML 并没有一种非常简洁的方法来做到这一点,但您可以通过一种方法来完成它...

    可能的解决方案

    为了在customer_form_register 块中插入一个新的子块,我们需要覆盖该块的布局定义。这并不理想,因为您替换了该块的任何其他定义,因此您需要小心地将任何其他必要的布局更新合并到您的新定义中。需要考虑的一点是,这个块在 captcha.xml 中重新定义,因此如果您需要该功能,您还需要将这些更新添加到新定义中。

    然后我们将插入一个新块customer.form.register.newsletter。这是因为该子块名称已经在 register.phtml 模板中被调用,例如 $this->getChildHtml('customer.form.register.newsletter'),但它似乎没有用于我注意到的其他任何事情。因此,一旦我们用这个名称定义了我们的新块,它将被插入到现有时事通讯复选框下方的页面中:

    <customer_account_create>
        <reference name="content">
            <block type="customer/form_register" name="customer_form_register" template="customer/form/register.phtml">
                <block type="page/html_wrapper" name="customer.form.register.fields.before" as="form_fields_before" translate="label">
                    <label>Form Fields Before</label>
                </block>
    
                <!-- This is our new block. -->
                <block type="core/template" name="customer.form.register.newsletter" template="customer/form/custom_register.phtml"/>
    
            </block>
        </reference>
    </customer_account_create>
    

    另类

    我认为您可能需要考虑使用 this extension 之类的东西,因为它似乎可以轻松添加自定义注册字段。

    【讨论】:

    • 感谢您的回复,您的回答是正确的,但我不想覆盖整个 register.php,我想让 register.phtml 正常工作并在其中添加我的新字段而不编辑 register.phtml
    • @DeepakMankotia - 我根据您的反馈更新了我的答案。它是否符合您现在正在寻找的标准?
    猜你喜欢
    • 1970-01-01
    • 2016-12-04
    • 2012-10-14
    • 1970-01-01
    • 1970-01-01
    • 2012-03-23
    • 1970-01-01
    • 2021-08-12
    • 1970-01-01
    相关资源
    最近更新 更多