Ich habe einen benutzerdefinierten No-Route-Handler mit dem folgenden Code hinzugefügt
<?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>
Was alles gut ist, fügt es den Handler hinzu und ich habe es durch bewiesen
<?php
namespace Smartie\HelloRouter\App\Router;
class NoRouteHandler implements \Magento\Framework\App\Router\NoRouteHandlerInterface
{
public function process(\Magento\Framework\App\RequestInterface $request)
{
die('woop');
}
}
Was mir jedoch aufgefallen ist, ist, dass wenn ich in der Prozessfunktion false zurückgebe, der Front-Controller 100 Router-Match-Iterationen erreicht hat . Nach dem Betrachten der NoRouteHandlerList scheint es, dass durch Hinzufügen meines neuen No-Route-Handlers tatsächlich alle bereits hinzugefügten No-Route-Handler (der Standard-Handler) ersetzt werden, und ich habe mich gefragt, warum?
Der folgende ähnliche Code zum Hinzufügen eines neuen Routers hat den Effekt, dass ein neuer Router an die Liste angehängt wird
<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>
Hinweis : Dies ist Magento 2 Version 0.74.0-beta16