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.