Reserviertes Schlüsselwort in Controller-Aktion - Magento 2

9

Ich arbeite an einem Admin-Grid-Konzept. Ich habe einen Github- Quellcode gefunden und diesen analysiert.

Ich habe zwar festgestellt, dass sich die URL von der Deklaration im Layout der UI-Komponenten unterscheidet .

<item name="url" xsi:type="string">*/*/new</item>

*/*ist der mittlere aktuelle Frontname und Aktionspfad, aber ich konnte ihn nicht New.phpim Controller-Pfad finden, sondern die NewAction.phpDatei ist vorhanden.

Ich bin also verwirrt. Wie wird diese NewAction.phpMethode automatisch der Factory-Methode in Model zugeordnet?

kann das jemand erklären?

Bilal Usean
quelle

Antworten:

15

Es gibt einige Wörter, die Sie nicht für Klassennamen verwenden können.
Grundsätzlich sind die reservierten php Worte wie new, public, static, ...

Um dies zu überwinden und diese Wörter dennoch in den URLs zuzulassen, fügt Magento das Suffix hinzu, Actionwenn die Klasse automatisch geladen wird.
Dies bedeutet, dass newKarten zu NewAction.php, publiczu PublicAction.php.

In der Klasse \Magento\Framework\App\Router\ActionList(Zweig 2.3) finden Sie die Liste der Wörter mit diesem Verhalten.

protected $reservedWords = [
    'abstract', 'and', 'array', 'as', 'break', 'callable', 'case', 'catch', 'class', 'clone', 'const',
    'continue', 'declare', 'default', 'die', 'do', 'echo', 'else', 'elseif', 'empty', 'enddeclare',
    'endfor', 'endforeach', 'endif', 'endswitch', 'endwhile', 'eval', 'exit', 'extends', 'final',
    'for', 'foreach', 'function', 'global', 'goto', 'if', 'implements', 'include', 'instanceof',
    'insteadof','interface', 'isset', 'list', 'namespace', 'new', 'or', 'print', 'private', 'protected',
    'public', 'require', 'return', 'static', 'switch', 'throw', 'trait', 'try', 'unset', 'use', 'var',
    'while', 'xor',
];

und hier ist der Code , dass Änderungen newan NewAction.

Marius
quelle
1
tolle Erklärung!
Bilal Usean
@Marius 2. Link ist veraltet.
Sv3n