控制器操作中的保留关键字-Magento 2


9

我正在研究管理网格的概念。我找到了一个github源代码并对其进行了分析。

虽然我发现URL与UI组件布局中的声明不同。

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

*/*当前当前的名字和动作路径,但是我New.php在控制器路径中找不到,但是NewAction.php存在文件。

所以我很困惑。如何NewAction.php在Model中自动映射到类似工厂方法?

谁能解释一下?

Answers:


15

有些单词不能用于类名。
基本上,PHP保留字喜欢newpublicstatic,...

为了克服这个问题,并且仍然允许在URL中使用这些单词,Magento在Action自动加载类时会添加后缀。
这意味着,new映射到NewAction.phppublicPublicAction.php

您可以在类\Magento\Framework\App\Router\ActionList(2.3分支)中找到具有此行为的单词列表。

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',
];

这里是代码改变newNewAction


1
很好的解释!
Bilal Usean '16

@Marius 2nd链接已过时。
sv3n
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.