6

MagentoProv1.11で設定されたgroup_idラジオボタンを追加しようとしています


http://phpmagento.blogspot.com/2012/01/how-to-show-customer-group-selecter-in.htmlおよび
http://developersindia.info/magento/magento-override-frontend-controllerに沿ってフォローします.html
ある程度機能していますが、group_idがデータベースに書き込まれていません。

これまでの私のモジュール:

ディレクトリ構造

app/code/local
- WACI
-- Customer
--- controllers
---- AccountController.php
--- etc
---- config.xml



config.xml

<config>
    <modules>
        <WACI_Customer>
            <version>0.1.0</version>
        </WACI_Customer>
    </modules>
    <global>
        <fieldsets>
            <customer_account>
                <group_id><create>1</create></group_id>
            </customer_account>
        </fieldsets>
    </global>
    <frontend>
        <routers>
            <customer>
                <args>
                    <modules>
                        <WACI_Customer before="Mage_Customer_AccountController">
                            WACI_Customer
                        </WACI_Customer>
                    </modules>
                </args>
            </customer>
        </routers>
    </frontend>
</config>



AccountController.php

<?php
/**
 *Customer account controller
 *
 * @package     WACI_Customer
 */

require_once Mage::getModuleDir('controllers', 'Mage_Customer').DS.'AccountController.php';

class WACI_Customer_AccountController extends Mage_Customer_AccountController
{

    /**
    * Create customer account action
    */
    public function createPostAction()
    {

// contents of createPostAction(), with some extra logic

            /**
             * Initialize customer group id
             */

            /* catch groupid at account creation */

            if($this->getRequest()->getPost('group_id')){ 
                $customer->setGroupId($this->getRequest()->getPost('group_id'));
            } else {
                $customer->getGroupId(); 
            } 



 // rest of method

    }

}




テーマ../persistent/customer/form/register.phtml

<div class="input-box">
    <label for="group_id"><?php echo $this->__('Select your customer group') ?></label><br />
    <?php 
        $groups = Mage::helper('customer')->getGroups()->toOptionArray();
        foreach ($groups as $group){
            echo '<input type="radio" name="group_id" value="'.$group['value'].'" class="validate-radio" >'.$group['label'].'</input><br/>';
        }
    ?>
</div>

したがって、グループのラジオボタンは登録時に正常に表示されますが、データはデータベースに書き込まれていません。これは、グループがまだ一般的なものとして表示されているためです。admin/manage customers

  • 記事で説明されているように、コアファイルを変更したくありません。
  • メイジ accountControllerクラスを適切に上書きしているかどうかはわかりません(おそらくこれを行うためのより良い方法がありますか?)

私は何をいじくりまわしているのですか?

4

2 に答える 2

6

以下のURLを参照してください。非常に役立つと思います。

登録時に顧客に顧客グループを選択させる方法

http://www.magentocommerce.com/boards/viewthread/24208/

Magentoでの登録時に顧客グループを選択する

http://sabujcse.wordpress.com/2010/03/09/selecting-customer-group-during-registration-in-magento/

Magentoに登録するときに顧客グループフィールドを追加する方法

http://xhtmlandcsshelp.blogspot.in/2010/12/add-customer-group-while-register-in.html

登録形式でグループを追加する方法

http://sapnandu-magento.blogspot.in/2011/07/how-to-add-group-in-register-form.html

于 2012-08-30T17:00:19.817 に答える
3

config.xmlを確認してください。

<frontend>
    <routers>
        <customer>
            <args>
                <modules>
                    <WACI_Customer before="Mage_Customer_AccountController">
                        WACI_Customer
                    </WACI_Customer>
                </modules>
            </args>
        </customer>
    </routers>
</frontend>

する必要があります:

<frontend>
    <routers>
        <customer>
            <args>
                <modules>
                    <WACI_Customer before="Mage_Customer">WACI_Customer</WACI_Customer>
                </modules>
            </args>
        </customer>
    </routers>
</frontend>

また、次の点にも注意を払う必要があります。

<WACI_Customer before="Mage_Customer">WACI_Customer</WACI_Customer>

<WACI_Customer before="Mage_Customer">
    WACI_Customer
</WACI_Customer>

<tag>との間に空きスペースがないことを確認する必要がありcontentます</tag>

于 2012-08-30T17:04:32.423 に答える