Giá trị của thuộc tính khách hàng Magento 2 không được lưu trong cơ sở dữ liệu?


11

Tôi đã thêm hai thuộc tính tùy chỉnh cho trang đăng ký khách hàng (Email thay thế & số thay thế) trong một mô-đun mới (thông qua: app / code /.../ Setup / InstallData.php).

Tôi đã thiết kế 'view' của nó bên trong một chủ đề tùy chỉnh (bằng cách ghi đè register.phtml). Bây giờ tôi có thể thấy các lĩnh vực mới trên trang đăng ký. Tuy nhiên, dữ liệu bên trong các trường mới (email và số thay thế) không được lưu trong cơ sở dữ liệu.

'customer_entity_int' tiết kiệm '0' giá trị .. 'customer_entity_varchar' không tiết kiệm được gì ..

nhập mô tả hình ảnh ở đây

Ở đây trong màn hình, bạn có thể thấy giá trị được lưu là '0'. Thuộc tính_id 132 dành cho 'Số liên lạc thay thế' trên trang đăng ký. Vì vậy, tôi hy vọng giá trị sẽ giữ dữ liệu mà tôi đang nhập trên trang đăng ký lối vào.

Tôi đang làm gì sai?


Bạn đã thêm thuộc tính khách hàng bằng cách sử dụng tiện ích mở rộng tùy chỉnh?
Kishan Patadia

Tôi đã thêm nó thông qua một mô-đun tùy chỉnh (ứng dụng / mã /.../ Setup / InstallData.php) và làm cho nó 'xem' thông qua một chủ đề mới được tùy chỉnh bằng cách ghi đè tệp 'phtml' ..
Kartik

Trước khi lưu dữ liệu .. in mô hình và kiểm tra xem giá trị của bạn có ở đó không.
Kingshuk Deb

Bạn đã reindex và xóa bộ nhớ cache?
Kishan Patadia

Nếu nó vẫn hiển thị các giá trị phù hợp sau khi in mô hình, hãy thử ghi lại truy vấn và kiểm tra xem truy vấn được tạo như thế nào và xem giá trị của bạn có ở đó trong truy vấn đó không. Để làm điều đó mở ra cho app / etc / di.xml ... tìm kiếm Quiet, Bạn sẽ chỉ tìm thấy 1 lần xuất hiện và thay đổi điều đó thành File. Bây giờ hãy mở tập tin Magento\Framework\DB\Logger\Filevà đặt $logAllQueriesthành true. và làm mới trình duyệt và mở tệp được tạo var/debug/db.log. Tìm truy vấn của bạn và kiểm tra truy vấn.
Kingshuk Deb

Câu trả lời:


20

Có lẽ bạn đã giải quyết vấn đề của mình nhưng với những người đến đây từ google như tôi, có một giải pháp:

Khi tạo thuộc tính khách hàng, vui lòng lưu ý về những điều sau:

Thuộc tính được thêm vào tập thuộc tính, nhóm

customer_eav_attribute
eav_entity_attribute

Thuộc tính được gán cho các hình thức khách hàng

customer_form_attribute

Và điều cuối cùng quan trọng nhất là bằng cách nào đó, mọi người chỉ bỏ qua nó và tự hỏi tại sao thuộc tính khách hàng không muốn lưu từ phụ trợ: Vui lòng đảm bảo đặt cờ "is_system" trong bảng "customer_eav_attribution" thành 0, nếu không thì thuộc tính sẽ không được lưu.

Nó có thể được thực hiện bằng cách đặt tùy chọn thuộc tính thành "system" => 0 trong các tham số thuộc tính bên trong tập lệnh cài đặt / nâng cấp.

Đừng quên xóa bộ nhớ cache của bạn sau khi tất cả!

liên kết trực tiếp đến giải pháp


tôi có thể lưu thuộc tính bằng is_system = 0, nhưng bạn có thể cho tôi biết lý do tại sao chúng ta cần làm cho nó 0 không? là 1 theo mặc định trong bảng
bhargav shastri

1
@bhargav shastri, vì thuộc tính is_system thuộc về Magento
user2804

vâng tôi hiểu rồi
bhargav shastri

0

Câu trả lời của A.Maksymiuk hoạt động như một cơ duyên. Ở đây các tập lệnh SQL (MySQL / Maria DB) tôi đã tạo để khắc phục sự cố với thuộc tính của mình:

# 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;

Chúc mừng

Renato

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.