FROM CACHE - jp_header
このコミュニティはピアツーピアサポートに移行しました。Shopify サポートは今後、このコミュニティへのサービスを提供いたしません。これからもぜひ、他のマーチャントやパートナーとつながり、サポートし合い、経験を共有してください。 当社の行動規範に違反する行動や削除を希望するコンテンツがありましたら、引き続きご報告ください

会員登録成功時は会員登録完了ページへ遷移させ、会員登録失敗の場合には登録ページに戻りエラー表示をさせたい。

会員登録成功時は会員登録完了ページへ遷移させ、会員登録失敗の場合には登録ページに戻りエラー表示をさせたい。

harumi
観光客
8 0 1

 初めまして。ご覧くださりありがとうございます。
現状こちらの記事を参考に会員登録成功時に登録完了ページに遷移、失敗時には会員登録ページを再度表示させることはできました。

https://qiita.com/br-to/items/a35f809e89b9caa31170

 

ですが、上記記事の最終ステップであるエラーの表示がうまくいかず、遷移設定の前にあったエラー表示もでなくなりました。(必要な情報がそろっていない場合、すでに登録済みのメールアドレスである場合のエラーなど)


会員登録失敗の場合エラー表示させるにはどうすればよいか、どなたかご教示いただけませんでしょうか。

 

▼現状のコード ▼

theme.liquid

</body>のすぐ上

 

 

 

  {{ '//ajax.googleapis.com/ajax/libs/jquery/2.2.3/jquery.min.js' | script_tag }}
<!-- Handle registration redirect -->
<script>
  $(document).ready(function(){
    var $returnTo = $('<input type="hidden" name="return_to" value="/pages/register_completed" />');

    if ($('#create_customer').length > 0){ //if registration form
      $returnTo.insertBefore($('#create_customer input[type="submit"]')); // add return_to input
    } else if ($('#g-recaptcha').length){ //if captcha form
       $returnTo.insertBefore($('.shopify-challenge__container input[type="submit"]'));
    }
  });
</script> 
  </body>

 

 

 

 

page-register-completed-template.liquid

最上部に{% style %}、{% endstyle %}のすぐ下

 

 

 

{% unless customer %}
<script>
  location.href = '/account/register';
  localStorage.setItem('register_failed', true);
</script>
{% endunless %}

 

 

 

 

customers/register.liquid

 

 

 

{% style %}
.error-hide{
display:none;}
{% endstyle %}

<div class="central" id="template">
  <div id="customer">
    <!-- Create Customer -->
    <div id="create-customer">
      <div class="template_header">
        <h1 class="h2 feature-header" data-cc-animate>{{ 'customer.register.title' | t }}</h1>

      {% form 'create_customer' %}
      {{ form.errors | default_errors }}
      <div class="form">
        <div class="input-row" data-cc-animate data-cc-animate-delay="0.2s">
          <input aria-label="{{ 'customer.register.last_name' | t }}" placeholder="{{ 'customer.register.last_name' | t }}" type="text" value="" name="customer[last_name]" id="last_name" class="large" size="30" />
        </div>
        ・・・・・・
        <div class="input-row" data-cc-animate data-cc-animate-delay="1.05s">
          <input aria-label="{{ 'customer.register.password' | t }}" placeholder="{{ 'customer.register.password' | t }}" type="password" value="" name="customer[password]" id="password" class="large password" size="30" />
        </div>

        <div class="wide-action">
          <input type="submit" value="{{ 'customer.register.submit' | t }}" data-cc-animate data-cc-animate-delay="0.8s"/>
          <span class="note" data-cc-animate data-cc-animate-delay="1.3s">
            <a data-cc-animate-click href="{{ routes.root_url }}">
              {{ 'customer.register.cancel' | t }}
            </a>
          </span>
        </div>
      </div>
      {% endform %}
    </div>

     <div class="error text-center error-hide">
    <p>会員登録エラー</p>
  </div>
  </div>
</div>

<script>
   $(document).ready(function() {
  if (localStorage.getItem('register_failed') === 'true') {
    $('.error').removeClass('error-hide');
    localStorage.removeItem('register_failed');
  };
   });
</script>

 

 

 

 

何卒よろしくお願いいたします。

0件の返信0