Magento 2 사용자 정의 고객 속성 값이 데이터베이스에 저장되지 않습니까?


11

app / code /.../ Setup / InstallData.php를 통해 새 모듈에 고객 등록 페이지 (대체 이메일 및 대체 번호)에 대한 두 가지 사용자 정의 속성을 추가했습니다.

register.phtml을 재정 의하여 사용자 정의 테마 내에서 '보기'를 설계했습니다. 등록 페이지에서 새 필드를 볼 수 있습니다. 그러나 새 필드 내부의 데이터 (대체 이메일 및 번호)는 데이터베이스 내부에 저장되지 않습니다.

'customer_entity_int'는 '0'값을 저장합니다. 'customer_entity_varchar'는 아무것도 저장하지 않습니다 ..

여기에 이미지 설명을 입력하십시오

여기 화면에서 값이 '0'으로 저장되어 있음을 알 수 있습니다. attribute_id (132)는 등록 페이지의 '대체 연락처 번호'입니다. 따라서 프런트 엔드 등록 페이지에 입력하는 데이터가 값으로 유지 될 것으로 기대합니다.

내가 무엇을 잘못하고 있지 ?


사용자 정의 확장을 사용하여 고객 속성을 추가 했습니까?
Kishan Patadia

나는 커스텀 모듈 (app / code /.../ Setup / InstallData.php)을 통해 그것을 추가하고 'phtml'파일을 덮어 써서 새로운 테마를 통해 'view'로 만들었습니다.
Kartik

데이터를 저장하기 전에 .. 모델을 인쇄하고 값이 있는지 확인하십시오.
Kingshuk Deb

캐시를 다시 색인화하고 지웠습니까?
Kishan Patadia

모델을 인쇄 한 후에도 여전히 올바른 값이 표시되면 쿼리를 기록하고 쿼리 생성 방법을 확인하고 해당 쿼리에 값이 있는지 확인하십시오. app / etc / di.xml ... open을 열려면 한 번만 Quiet찾아서로 변경하십시오 File. 이제 파일을 열고 true로 Magento\Framework\DB\Logger\File설정하십시오 $logAllQueries. 브라우저를 새로 고치고 생성 된 파일을 엽니 다 var/debug/db.log. 검색어를 찾아서 확인하십시오.
Kingshuk Deb

답변:


20

당신은 아마 당신의 문제를 해결했지만 나처럼 구글에서 온 사람들을 위해 해결책이 있습니다.

고객 속성을 작성할 때 다음 사항에주의하십시오.

속성이 속성 세트, 그룹에 추가됨

customer_eav_attribute
eav_entity_attribute

고객 양식에 속성이 할당 됨

customer_form_attribute

그리고 마지막으로 가장 중요한 것은 사람들이 그것을 건너 뛰고 고객 속성이 백엔드에서 저장하지 않는 이유를 궁금해합니다. "customer_eav_attribute"테이블의 "is_system"플래그를 0으로 설정하십시오. 그렇지 않으면 속성 저장되지 않습니다.

설치 / 업그레이드 스크립트 내의 속성 매개 변수에서 속성 옵션을 "system"=> 0으로 설정하면됩니다.

결국 캐시를 플러시하는 것을 잊지 마십시오!

솔루션에 직접 링크


is_system = 0으로 속성을 저장할 수 있지만 왜 0으로 만들어야하는지 알려 주실 수 있습니까? 등의 1 테이블에 기본적으로
bhargav 샤 스트리

1
is_system 속성이 Magento에 속하기 때문에 @bhargav shastri
user2804

그래, 난 그것을 감사 있어요
bhargav 샤 스트리

0

A.Maksymiuk의 대답은 매력처럼 작용했습니다. 여기 내 속성의 문제를 해결하기 위해 만든 SQL 스크립트 (MySQL / Maria DB)가 있습니다.

# Sets up attribute_id to be changed
select @ATTRIBUTE_ID := attribute_id from eav_attribute where attribute_code  = 'attribute_code';

# Refence attribute_id to be used to create the group (here customer email) 
SELECT @REFENCENCE_ATTRIBUTE_ID := attribute_id FROM eav_attribute where entity_type_id = 1 AND attribute_code = 'email';

# Verifies it exists in the customer table
SELECT * FROM customer_eav_attribute WHERE attribute_id = @ATTRIBUTE_ID;

# Fixes is_system issue
UPDATE customer_eav_attribute SET is_system = 0 WHERE attribute_id = @ATTRIBUTE_ID;

# Fixes group issue using same values as the customer email attribute
INSERT INTO eav_entity_attribute 
SELECT null, entity_type_id, attribute_set_id, attribute_group_id, @ATTRIBUTE_ID, 100
FROM eav_entity_attribute 
WHERE attribute_id IN (@REFENCENCE_ATTRIBUTE_ID) 
LIMIT 1;

건배,

레나토

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.