Extra Form
PHP PHP 7.4
CMS Rhymix 2.x

(아래 다른 분이 질문하신 내용과 유사합니다. https://xetown.com/questions/1517174)

 

이슈 설명

 

1. 회원가입 폼에 새로운 항목을 추가하고, 그 항목을 필수로 지정하면, 어떤것을 선택하거나 입력하든 "XXXX 값은 필수입니다"라고 메시지를 표시하면 더 이상 진행이 안되네요. 

 

2. Text(한줄입력칸), 단일선택(Single Select), 전화번호 등등 모두 마찬가지네요. 참고로, 확장 폼이 아닌 기본 들어있는 항목들은 필수로 해도 오류가 안뜹니다.

 

3. 그래서, "필수"를 "선택"으로 바꾸면, 회원가입이 가능해지는데, 이때 입력받은 확장변수를 체크해보면 값들이 모두 제대로 들어와 있습니다. 

 

추정 원인?

 

회원가입 "필수" 확장변수 입력 값이 비어있는지 체크하는 루틴에서 오류가 있던지, 충돌이 생기던지 하는 것 같은데, 이게 함수가 어디에 위치해 있는지 혹시 아시는 분 있는지요. 디버깅을 좀 해보려고 해도 쉽지가 않은데 조금 도와주시면 감사하겠습니다~~...

 

아래 다른 질문에서 해보신 분이 된다는 분도 계신 것으로 봐서, 서버 DB버전이나, CMS 버전에 따라 달라지기도 하는 것 같습니다. 아니면 레이아웃이나 다른 스크립트와 충돌이 있을수도 있구요.

 

  • profile

    해결했습니다. 코어에 있던 버그네요.   /module/member/member.controller.php에 다음과 같은 줄이 있는데, 

    if( $formInfo->isDefaultForm && ($formInfo->isUse || $formInfo->required || $formInfo->mustRequired))

    if( $formInfo->isUse || $formInfo->required || $formInfo->mustRequired )

    로 고치면 되네요. extra vars를 argument로 전달하지 않고 (즉, NULL), 검사하는 부분(_checkSignUpFields( ))에서는 extra vars까지 검사하게 해놔서 에러가 생긴 것 같습니다.

     

            // Extract the necessary information in advance
            $getVars = array();
            $use_phone = false;
            if($config->signupForm)
            {   
                foreach($config->signupForm as $formInfo)
                {   
                    if($formInfo->name === 'phone_number' && $formInfo->isUse)
                    {   
                        $use_phone = true;
                    }
                    if(/*$formInfo->isDefaultForm &&*/ ($formInfo->isUse || $formInfo->required || $formInfo->mustRequired))
                    {   
                        $getVars[] = $formInfo->name;
                    }
                }
            }

     

  • profile profile
    네, 현재 develop 브랜치에 적용된 패치도 동일한 내용입니다. 2.0.6에서는 문제가 없을 거예요.^^
  • profile profile
    관심갖고 봐주셔서 감사합니다. 2.0.3~2.0.5까지만의 문제였었네요. 열심히 고치고 개선해주는 분들 감사합니다~