Magento 2 özel müşteri özelliğinin değerleri veritabanına kaydedilmiyor mu?


11

Yeni bir modüle müşteri kayıt sayfası (Alternatif e-posta ve Alternatif numara) için iki özel özellik ekledim (üzerinden: app / code /.../ Setup / InstallData.php).

Özel bir tema içinde 'view' değerini tasarladım (register.phtml'yi geçersiz kılarak). Artık kayıt sayfasında yeni alanlar görebiliyorum. Ancak yeni alanların içindeki veriler (alternatif e-posta ve numara) veritabanına kaydedilmiyor.

'customer_entity_int' '0' değerini kaydediyor. 'customer_entity_varchar' hiçbir şey kaydetmiyor ..

resim açıklamasını buraya girin

Burada ekranda değerin '0' olarak kaydedildiğini görebilirsiniz. Özellik_id 132, kayıt sayfasındaki 'Alternatif Kişi Numarası' içindir. Bu yüzden, değerin ön uç kayıt sayfasına girdiğim verileri tutmasını bekliyorum.

Neyi yanlış yapıyorum ?


Özel uzantı kullanarak müşteri özellikleri eklediniz mi?
Kishan Patadia

Özel bir modül (app / code /.../ Setup / InstallData.php) ile ekledim ve 'phtml' dosyasını geçersiz kılarak özelleştirilmiş yeni bir tema ile 'görünüm' yaptım ..
Kartik

Verileri kaydetmeden önce .. modeli yazdırın ve değerlerinizin orada olup olmadığını kontrol edin.
Kingshuk Deb

Yeniden dizine eklediniz ve önbelleği temizlediniz mi?
Kishan Patadia

Model yazdırıldıktan sonra hala uygun değerleri gösteriyorsa, sorguyu günlüğe kaydetmeyi ve sorgunun nasıl oluşturulduğunu kontrol etmeyi deneyin ve değerlerinizin bu sorguda olup olmadığını görün. Bunu yapmak için app / etc / di.xml ... araması yapın Quiet, sadece 1 kez bulunacak ve olarak değiştireceksiniz File. Şimdi dosyayı açın Magento\Framework\DB\Logger\Fileve $logAllQueriestrue olarak ayarlayın . tarayıcıyı yenileyin ve oluşturulan dosyayı açın var/debug/db.log. Sorgunuzu bulun ve sorguyu kontrol edin.
Kingshuk Deb

Yanıtlar:


20

Muhtemelen sorununuzu çözdünüz, ancak buraya benim gibi Google'dan gelen insanlar için bir çözüm var:

Müşteri özelliğini oluştururken lütfen aşağıdaki hususlara dikkat edin:

Özellik grubuna, gruba özellik eklendi

customer_eav_attribute
eav_entity_attribute

Müşteri formlarına özellik atanır

customer_form_attribute

Ve sonuncusu bir şekilde en önemlisi, insanlar sadece atlayıp müşteri özelliğinin neden arka uçtan kaydetmek istemediğini merak ediyorlar: Lütfen "customer_eav_attribute" tablosundaki "is_system" bayrağını 0 olarak ayarladığınızdan emin olun, aksi takdirde özellik kaydedilmeyecek.

Yükleme / yükseltme komut dosyası içindeki özellik parametrelerinde özellik seçeneği "system" => 0 olarak ayarlanarak yapılabilir.

Sonuçta önbelleğinizi temizlemeyi unutmayın!

çözüme doğrudan bağlantı


öznitelik is_system = 0 ile kaydedebilirsiniz, ama neden 0 yapmamız gerektiğini bana bildirir misiniz? Tabloda varsayılan olarak 1 olarak
bhargav shastri

1
@bhargav shastri, çünkü is_system özelliği Magento'ya ait
user2804

evet anladım teşekkürler
bhargav shastri

0

A.Maksymiuk'un yanıtı bir cazibe gibi çalıştı. İşte özniteliğimdeki sorunu çözmek için oluşturduğum SQL komut dosyaları (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;

Alkış,

Renato

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.