Tôi đã thêm một trình xử lý không có tuyến tùy chỉnh bằng mã sau đây
<?xml version="0.1"?>
<config>
<type name="Magento\Framework\App\Router\NoRouteHandlerList">
<arguments>
<argument name="handlerClassesList" xsi:type="array">
<item name="hello" xsi:type="array">
<item name="class" xsi:type="string">Smartie\HelloRouter\App\Router\NoRouteHandler</item>
<item name="sortOrder" xsi:type="string">10</item>
</item>
</argument>
</arguments>
</type>
</config>
Đó là tất cả tốt nó thêm trình xử lý và tôi đã chứng minh điều đó bằng
<?php
namespace Smartie\HelloRouter\App\Router;
class NoRouteHandler implements \Magento\Framework\App\Router\NoRouteHandlerInterface
{
public function process(\Magento\Framework\App\RequestInterface $request)
{
die('woop');
}
}
Tuy nhiên, điều tôi nhận thấy là nếu tôi trả về false trong hàm process thì tôi kết thúc với bộ điều khiển Front đạt 100 lần lặp bộ định tuyến khớp . Sau khi xem NoRouteHandlerList, có vẻ như bằng cách thêm trình xử lý không có tuyến mới của tôi, nó thực sự thay thế tất cả các trình xử lý không có tuyến đường đã được thêm vào (mặc định) và tôi tự hỏi tại sao?
Mã tương tự sau đây để thêm bộ định tuyến mới có tác dụng nối thêm bộ định tuyến mới vào danh sách
<type name="Magento\Framework\App\RouterList">
<arguments>
<argument name="routerList" xsi:type="array">
<item name="custom" xsi:type="array">
<item name="class" xsi:type="string">Smartie\HelloRouter\Controller\Router</item>
<item name="disable" xsi:type="boolean">false</item>
<item name="sortOrder" xsi:type="string">20</item>
</item>
</argument>
</arguments>
</type>
Lưu ý : Đây là phiên bản magento 2 0.74.0-beta16