Kata kunci yang dicadangkan dalam aksi pengontrol - Magento 2


9

Saya sedang mengerjakan konsep grid admin. Saya menemukan satu kode sumber github dan menganalisisnya.

Sementara saya menemukan URL berbeda dari deklarasi di tata letak komponen UI .

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

*/*berarti frontname saat ini dan jalur tindakan, tetapi saya tidak dapat menemukan New.phpdi jalur pengontrol tetapi NewAction.phpfile hadir.

Jadi saya bingung. Bagaimana pemetaan ini secara otomatis NewAction.phpmenyukai metode pabrik dalam Model?

adakah yang bisa menjelaskan hal ini?

Jawaban:


15

Ada beberapa kata yang tidak bisa Anda gunakan untuk nama kelas.
Pada dasarnya kata-kata php dilindungi undang-undang seperti new, public, static, ...

Untuk mengatasinya dan masih memungkinkan kata-kata ini di url, Magento menambahkan akhiran Actionketika kelas diisi secara otomatis.
Ini berarti newmemetakan ke NewAction.php, publicuntuk PublicAction.php.

Anda dapat menemukan di kelas \Magento\Framework\App\Router\ActionList(cabang 2.3) daftar kata yang memiliki perilaku ini.

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

dan di sini adalah kode yang berubah newmenjadi NewAction.


1
penjelasan yang bagus!
Bilal Usean

@Marius 2nd link sudah usang.
sv3n
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.