Усі PHP програмісти добре знайомі із суперглобальними змінними $_GET, $_REQUEST, $_POST, але їх пряме використання не дозволяється згідно стандартів коду Magento2. Тому не використовуйте їх у своїх Magento 2 проектах, особливо якщо бажаєте проходження коду Technical Review на Magento Marketplace.
Які ж методи слід використовувати?
Для отримання даних із запиту, використовуйте такі методи:
getParam($key, $default = null);
getParams();
getPostParam($key, $default = null);
getPost();
класу \Magento\Framework\App\RequestInterface, наприклад:
protected $request;
public function __construct(
\Magento\Framework\App\RequestInterface $request,
....//інші параметри вашого класу
) {
$this->request = $request;
...//інший код конструктора
}
public function example() {
// $data = $_REQUEST;
$data = $this->request->getParams();
// $id = isset($_REQUEST['id']) ? $_REQUEST['id'] : null;
$id = $this->request->getParam('id');
// $name = isset($_REQUEST['name']) ? $_REQUEST['name'] : 'петро';
$name = $this->request->getParam('name', 'петро');
// $postData = $_POST;
$postData = $this->request->getPost();
// $password = isset($_POST['password']) ? $_REQUEST['password'] : null;
$name = $this->request->getPostValue('password');
// $storeId = isset($_POST['store_id']) ? $_REQUEST['store_id'] : 1;
$storeId = $this->request->getPostValue('store_id', 1);
}
Якщо ви маєте досвід роботи із ZendFramework, тоді ці методи не є новими для вас.
Важливо! Для отримання об'єкта запиту в класі контролера чи блоку, не оголошуйте додаткову залежність у конструкторі. Вам доступний публічний метод getRequest().