ใน Magento 2 ฉันต้องใช้อะไรdi.xml
และจะใช้di.xml
กับโมดูลได้อย่างไร
ใครรู้กรุณาแสดงทีละขั้นตอน
ใน Magento 2 ฉันต้องใช้อะไรdi.xml
และจะใช้di.xml
กับโมดูลได้อย่างไร
ใครรู้กรุณาแสดงทีละขั้นตอน
คำตอบ:
What case We use di.xml ?
ให้เรานำตัวอย่างรวดเร็วจากโมดูลลูกค้า Magento 2
1.Preference
<preference for="Magento\Customer\Api\AddressRepositoryInterface"
type="Magento\Customer\Model\ResourceModel\AddressRepository" />
โค้ดด้านบนเมื่อมีคนขอให้คุณยกตัวอย่างMagento\Customer\Api\AddressRepositoryInterface
มันจะยกตัวอย่างวัตถุ Magento \ Customer \ Model \ ResourceModel \ AddressRepository (แอตทริบิวต์ type)
การกำหนดค่าตามความชอบของชั้นเรียนไม่ได้มีไว้สำหรับอินเทอร์เฟซเท่านั้นเราสามารถเปลี่ยนคลาสจริงได้เช่นกัน
<preference for="Magento\Customer\Model\CustomerManagement"
type="Magento\Customer\Model\customModel" />
คุณสามารถสร้างคลาส 'customModel' สำหรับ 'CustomerManagement' และทำการเปลี่ยนแปลง ระบบการตั้งค่าระดับแทนการใช้ระบบการเขียนคลาสใหม่
http://alanstorm.com/magento_2_object_manager_preferences
2. ข้อโต้แย้ง
<type name="Magento\Customer\Model\ResourceModel\Group" shared="false">
<arguments>
<argument name="groupManagement" xsi:type="object">Magento\Customer\Api\GroupManagementInterface\Proxy</argument>
</arguments>
</type>
ในโค้ดข้างต้น, th เราจะส่งวัตถุเป็นอาร์กิวเมนต์ที่เรากำลังพูดระบบเพื่อแทรก "พร็อกซี่" groupManagement
ชั้นเป็นวัตถุที่มีชื่อของที่ นอกจากนี้เราสามารถใช้อาร์กิวเมนต์เพื่อแทนที่อาร์กิวเมนต์ที่มีอยู่ด้วย
http://alanstorm.com/magento_2_object_manager_argument_replacement
3. ปลั๊กอิน
<type name="Magento\Customer\Model\ResourceModel\Visitor">
<plugin name="catalogLog" type="Magento\Catalog\Model\Plugin\Log" />
</type>
ในรหัสข้างต้น public function clean($object)
ในชั้นผู้เข้าชมจะเรียกว่าหลังจากฟังก์ชั่นสาธารณะafterClean(Visitor $subject, $logResourceModel)
ซึ่งอยู่ในชั้นเรียนเข้าสู่ระบบ
4 ประเภทเสมือน
การสร้างประเภทเสมือนนั้นเหมือนกับการสร้างคลาสย่อยสำหรับคลาสที่มีอยู่
หากต้องการทราบเพิ่มเติมโปรดดูตัวอย่างการปฏิบัติที่ฉันพูดถึงเป็นลิงก์จากอลันโดยการฝึกฝนคุณจะได้รับประสบการณ์ที่ชัดเจนยิ่งขึ้น
หวังว่านี่จะช่วย .... :)