Từ khóa dành riêng trong hành động của bộ điều khiển - Magento 2


9

Tôi đang làm việc trên một khái niệm lưới quản trị. Tôi tìm thấy một mã nguồn github và phân tích cái đó.

Trong khi tôi tìm thấy URL khác với khai báo trong bố cục thành phần UI .

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

*/*có nghĩa là đường dẫn và tên hành động hiện tại , nhưng tôi không thể tìm thấy New.phptrong đường dẫn của bộ điều khiển mà thay vào đó NewAction.phplà tập tin.

Thế là tôi bối rối. Làm thế nào điều này tự động ánh xạ để NewAction.phpthích phương thức nhà máy trong Mô hình?

bất cứ ai có thể giải thích điều này?

Câu trả lời:


15

Có một số từ mà bạn không thể sử dụng cho tên lớp.
Về cơ bản những lời php dành riêng thích new, public, static, ...

Để khắc phục điều này và vẫn cho phép các từ này trong các url Magento thêm hậu tố Actionkhi lớp được tự động tải.
Điều này có nghĩa là newbản đồ đến NewAction.php, publicđến PublicAction.php.

Bạn có thể tìm thấy trong lớp \Magento\Framework\App\Router\ActionList(nhánh 2,3) danh sách các từ có hành vi này.

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

và đây là mã thay đổi newthành NewAction.


1
giải thích tuyệt vời!
Bilal Usean

@Marius liên kết thứ 2 đã lỗi thời.
sv3n
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.