コントローラーアクションの予約済みキーワード-Magento 2


9

私は管理グリッドのコンセプトに取り組んでいます。私は1つのgithubソースコードを見つけ、それを分析しました。

URLがUIコンポーネントのレイアウトの宣言とは異なることがわかりました。

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

*/*現在のフロントネームとアクションパスを意味しますがNew.php、コントローラーパスでは見つかりませんでしたが、代わりにNewAction.phpファイルが存在します。

だから私は混乱しています。これはどのNewAction.phpようにモデルのファクトリーメソッドに自動的にマッピングされますか?

誰でもこれを説明できますか?

回答:


15

クラス名に使用できない単語があります。
基本的には予約済みのPHPの言葉が好きでnewpublicstatic、...

これを克服し、URLでこれらの単語を許可するためActionに、クラスがオートロードされるときにMagentoはサフィックスを追加します。
この手段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',
];

そして、ここでのコードで変更するnewにはNewAction


1
素晴らしい説明!
ビラルUsean 2016

@Marius 2番目のリンクが古くなっています。
sv3n
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.