Magento2'deki müdahale magento1'deki gözlemcilerin yerini alıyor mu?


9

Magento2'de orijinal bir yöntemin davranışını gözlemciler magento1'de olduğu gibi değiştirirken ele alma tercih edilen yöntem midir?

https://wiki.magento.com/display/MAGE2DOC/Using+Interception

Yanıtlar:


16

Müdahalenin olay gözlemcilerinin yerini almayı amaçladığını düşünmüyorum.
Magento2 kodunda hala gönderilen olaylar var.

Durdurucular sadece bir yöntemin girdisini veya çıktısını işlemenin bir yoludur.
Ya da bir yöntemin davranışı ( aroundönleme aracını kullanarak ) ama anladığım kadarıyla bu riskli bir yaklaşımdır.

Sınıf yeniden yazma işlemlerinden mümkün olduğunca kaçınmanın bir yolu olduğunu düşünüyorum.
Magento 1.x'te, bir yöntemin sonucunu değiştirmeniz gerekiyorsa, içeren sınıfı ve yöntemin kendisini geçersiz kılmanız gerekir.
Şimdi sadece kullanabilirsiniz before, afterya da aroundveriyi işlemek için önleyicilerin.

Gözlemcilerle, tam yöntemin kendisini değil, bir yöntemin belirli sabit noktalarındaki verileri işleyebilirsiniz.

Kanımca, mümkünse gözlemcileri kullanmak Magento 2'de bile özelleştirme için hala en iyi yaklaşım.


2
Katılıyorum. Müdahale düşük seviyeli bir mekanizmadır. Ancak olayların yerini almaz. Olaylar daha üst düzey servis sağlayıcı arayüzü sağlar
Anton Kril

6

Müdahale, olayların evrimidir. Amacı, bir geliştiricinin kodunu uzantı noktalarını düşünmeden yazmasına izin vermektir.

Etkinliklerde modülünüzün özelleştirilebilmesi için Mage :: dispatchEvent () yaptığınız yerleri düşünmeniz gerekir.

Müdahale bunu düşünmemenizi sağlar. Sadece iş mantığınızı yazıyorsunuz. Her yöntem çağrısı bir olaydır. Dolayısıyla, kodunuzu uygun bir nesne yönelimli şekilde yazarsanız, tasarımla tamamen özelleştirilebilir olacaktır.

Ancak etkinlikler, iş dilini konuşan daha üst düzey bir Hizmet Sağlama Arabirimi sağlar. Yani olaylar Magento 2'de kalacak.


Devdocs'ta bu önemli gerçeği bir karışıklık kaynağı olarak alabilir misiniz, özellikle M2'de hala birçok etkinliğiniz olduğunu görüyor musunuz? Olayların öldüğünü bilersek, buna göre kod yazabiliriz, bunu dokümanlarda bahseten hiçbir yerde görmedim. Diğer dillerde bazen olayları kullanmanın nedenleri ve diğer zamanlar da vardır, bence Magento 2'nin farklı olduğunu açıklığa kavuşturmanız gerekir.
Karen Baker

5

Şu anda belirli olayları dinleme seçeneği var ve önleyicilerin sadece yeniden yazmaların yerini almasını öneririm. İhtiyaçlarınız için bir tane varken olayları kullanmaya devam ediyorum.

Mevcut sürüme bakarsanız, bazı modüllerde events.xmltanımları içeren dosyalar bulunur.

<event name="cms_wysiwyg_images_static_urls_allowed">
    <observer name="catalog_wysiwyg" instance="Magento\Catalog\Model\Observer"  />
</event>

Magento-2'de en son sürümde gözlemci deseni değiştirildi.Şimdi events.xml'deki yöntem özniteliğini bildirmenize gerek yok, otomatik olarak yürütme yöntemini çalıştıracak, denetleyici gibi.
Keyur Shah
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.