회원가입 확장항목을 필수로 지정하면 오류
CMS/프레임워크 | Rhymix 2.0 |
---|---|
개발 언어 | PHP 7.4 |
(아래 다른 분이 질문하신 내용과 유사합니다. https://xetown.com/questions/1517174)
이슈 설명
1. 회원가입 폼에 새로운 항목을 추가하고, 그 항목을 필수로 지정하면, 어떤것을 선택하거나 입력하든 "XXXX 값은 필수입니다"라고 메시지를 표시하면 더 이상 진행이 안되네요.
2. Text(한줄입력칸), 단일선택(Single Select), 전화번호 등등 모두 마찬가지네요. 참고로, 확장 폼이 아닌 기본 들어있는 항목들은 필수로 해도 오류가 안뜹니다.
3. 그래서, "필수"를 "선택"으로 바꾸면, 회원가입이 가능해지는데, 이때 입력받은 확장변수를 체크해보면 값들이 모두 제대로 들어와 있습니다.
추정 원인?
회원가입 "필수" 확장변수 입력 값이 비어있는지 체크하는 루틴에서 오류가 있던지, 충돌이 생기던지 하는 것 같은데, 이게 함수가 어디에 위치해 있는지 혹시 아시는 분 있는지요. 디버깅을 좀 해보려고 해도 쉽지가 않은데 조금 도와주시면 감사하겠습니다~~...
아래 다른 질문에서 해보신 분이 된다는 분도 계신 것으로 봐서, 서버 DB버전이나, CMS 버전에 따라 달라지기도 하는 것 같습니다. 아니면 레이아웃이나 다른 스크립트와 충돌이 있을수도 있구요.

토비리
Lv. 5
댓글 3
해결했습니다. 코어에 있던 버그네요. /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까지 검사하게 해놔서 에러가 생긴 것 같습니다.
$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;
}
}
}