1

Magentoテーマのカスタムレイアウトをすでに作成しましたが、これは正常に機能します。私がこれまでに抱えている唯一の問題は、私の登録がまったく何もしないということです。検索してみましたが、登録ページに新しいフィールドを追加する方法の結果しか出てこないようです。私の現在のコードは次のとおりです。

    <div id="user-login">
        <span class="log-head loginfield">
            <form action="<?php echo $this->getPostActionUrl() ?>" method="post" id="login-form">
                <h2>You Already Have An Account</h2>
                <p>Please login with your e-mail and password</p>
                <span>
                  <label>Enter your E-mail address:</label>
                  <input type="text" name="login[username]" value="<?php echo $this->htmlEscape($this->getUsername()) ?>" id="email" class="input-text required-entry validate-email" title="<?php echo $this->__('Email Address') ?>" />
                </span>
                <span>
                  <label>Enter your password:</label>
                  <input type="password" name="login[password]" class="input-text required-entry validate-password" id="pass" title="<?php echo $this->__('Password') ?>" />
                </span>
                  <input class="submit" type="submit" value="Submit">
             </form>
         </span>
         <span class="log-head registerfield">
             <form action="<?php echo $this->getPostActionUrl() ?>" method="post" id="form-validate">
                 <input type="hidden" name="success_url" value="<?php echo $this->getSuccessUrl() ?>" />
                 <input type="hidden" name="error_url" value="<?php echo $this->getErrorUrl() ?>" />
                 <h2>You Don't Have An Account</h2>
                 <p>Please enter your information and create an account</p>
                 <span>
                   <label>Email Address:</label>
                   <input type="text" name="login[username]" value="<?php echo $this->htmlEscape($this->getUsername()) ?>" id="email" class="input-text required-entry validate-email" title="<?php echo $this->__('Email Address') ?>" />
                 </span>
                 <span>
                   <label>Enter your password:</label>
                   <input type="password" name="password" id="password" title="<?php echo $this->__('Password') ?>" class="input-text required-entry validate-password" />
                 </span>
                 <span>
                   <label>Re-Enter your password:</label>
                   <input type="password" name="confirmation" title="<?php echo $this->__('Confirm Password') ?>" id="confirmation" class="input-text required-entry validate-cpassword" />
                 </span>
                   <input class="submit" type="submit" value="Create Account">
              </form>
              <script type="text/javascript">
                        //<![CDATA[
                            var dataForm = new VarienForm('form-validate', true);
                            <?php if($this->getShowAddressFields()): ?>
                            new RegionUpdater('country', 'region', 'region_id', <?php echo $this->helper('directory')->getRegionJson() ?>, undefined, 'zip');
                            <?php endif; ?>
                        //]]>
              </script>
          </span>
</div><!--/user-login -->

私は自分のデザインに合うように登録ページとログインページを組み合わせました。入力フィールドは、基本テーマから直接取得されます。ユーザーをテストして作成しようとすると、ページが更新されるだけで、ユーザーが作成されることはありません。バックエンドからユーザーを作成してログインしようとすると、ページが更新されますが、ログインしません。

どんな助けでも間違いなくありがたいです。

4

4 に答える 4

4

問題が発生する理由は、両方のフォームが同じフォームアクションを指しているためです(入力名がデフォルトのMagentoと同じであると想定しています)

action="<?php echo $this->getPostActionUrl()

これで問題が解決するはずです

これを変更します(使用しているブロックタイプがわからないため、両方のアクションを変更します)

 <form action="<?php echo $this->getPostActionUrl() ?>" method="post" id="login-form">

<form action="<?php echo Mage::helper('customer')->getLoginPostUrl() ?>" method="post" id="login-form">

これを変える

<form action="<?php echo $this->getPostActionUrl() ?>" method="post" id="form-validate">

<form action="<?php echo Mage::helper('customer')->getRegisterPostUrl() ?>" method="post" id="form-validate">

これが機能しない場合は、ページソースを表示し、両方のフォームアクションがポイントされている場所を確認します(ポイントする場所については、以下を参照してください)。アクションをに変更してみてください

 <?php echo  Mage::getUrl() . '/customer/account/loginPost/'; ?> and <?php echo  Mage::getUrl() . /customer/account/createpost/ ?>

問題の理由

デフォルトでは、magentoは登録とログインフォームを2つの異なるブロックを使用する2つの異なるページに分割します

/app/design/frontend/default/contempospace/layout/customer.xml(customer_account_createおよびcustomer_account_login)を参照してください

<block type="customer/form_login" name="customer_form_login" template="customer/form/login.phtml"/>

<block type="customer/form_register" name="customer_form_register" template="customer/form/register.phtml">

両方のブロックには、異なるURL / customer / account /loginPost/と/customer/ account / createpost /を指すメソッドgetPostActionUrl()があります。

見る

/app/code/core/Mage/Customer/Block/Form/Login.php
/app/code/core/Mage/Customer/Block/Form/Register.php

ブロックとPHTMLがどのように連携するかをご覧ください。

于 2012-10-26T00:17:58.170 に答える
0

使用してみてください:

<input name="form_key" type="hidden" value="<?php echo $this->getFormKey() ?>" />

また、元の名前からフィールドに同じ名前を使用する必要があります。

于 2012-10-25T17:53:59.987 に答える
0
<input name="form_key" type="hidden" value="<?php echo $this->getFormKey() ?>" />

<block type="customer/form_login" name="customer_form_login" template="customer/form/login.phtml"/>

<block type="customer/form_register" name="customer_form_register" template="customer/form/register.phtml">

<input name="form_key" type="hidden" value="<?php echo $this->getFormKey() ?>" />

<block type="customer/form_login" name="customer_form_login" template="customer/form/login.phtml"/>

<block type="customer/form_register" name="customer_form_register" template="customer/form/register.phtml">
于 2013-03-21T16:14:43.950 に答える
0

誰もがこれで非常に役に立ちました(私は同じ問題を抱えていました)。少し時間がかかりましたが、最近のアップグレード後にこれが表面化しました。問題は、登録フォームにフォームキーフィールドが含まれていないことでした。フォームに以下の行を追加するだけで、正常に機能し始めました。

<?php echo $this->getBlockHtml('formkey')?>
于 2015-12-22T23:08:52.730 に答える