Magento 2: Tại sao Bộ điều khiển tùy chỉnh của tôi tạo ra một Thiết bị chặn?


7

Gần đây tôi đã tạo một cấu hình định tuyến cơ bản cho một mô-đun thử nghiệm

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../lib/internal/Magento/Framework/App/etc/routes.xsd">
    <router id="standard">
        <route id="helloworld" frontName="helloworld">
            <module name="Pulsestorm_Helloworld" />
        </route>
    </router>    
</config>

và sau đó tạo một tệp điều khiển tại

app/code/Pulsestorm/Helloworld/Controller/Index/Index.php

Mọi thứ hoạt động như mong đợi - nhưng tôi đã rất ngạc nhiên khi phát hiện ra rằng Magento đã tự động tạo ra một thiết bị chặn cho bộ điều khiển mới của tôi.

var/generation/Pulsestorm/Helloworld/Controller/Index/Index/Interceptor.php

Tôi đã không định cấu hình bất kỳ plugin nào cho bộ điều khiển của mình - vì vậy tôi hơi bối rối về lý do Magento tạo ra một thiết bị chặn.

Điều gì khiến Magento 2 tự động tạo ra một Thiết bị đánh chặn cho bộ điều khiển mới?

Câu trả lời:


5

Plugin được xác định trên giao diện. Vì vậy, nếu bạn xác định plugin cho giao diện cụ thể

<type name="Magento\Framework\App\ActionInterface">
    <plugin name="log" type="Magento\Logging\App\Action\Plugin\Log" sortOrder="95"/>
</type>

sau đó plugin sẽ hoạt động trên tất cả các lớp thực hiện nó và CNTT sẽ tạo ra các proxy chặn cho chúng. Đó là lý do Magento 2 sẽ tự động tạo một bộ chặn cho bộ điều khiển của bạn (thực hiện Magento \ Framework \ App \ ActionInterface).


cảm ơn bạn! Câu hỏi nhanh - bạn đang thấy <type/>định nghĩa cho Magento\Framework\App\ActionInterface- không có điều gì xuất hiện trong bản cài đặt của tôi (hoặc, ít nhất, tôi không thể tìm thấy nó với grep / ack)
Alan Storm

Xin lỗi vì trả lời muộn. Trong Magento / Backend / etc / adminhtml / di.xml, chúng tôi có <type name = "Magento \ Framework \ App \ Action \ Action"> <plugin name = "storeCheck" tật = "true" /> </ type>
KAndy
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.