Tôi có thể gọi Mage :: getUrl () trực tiếp bằng $ this-> trong Magento2 không?
Làm thế nào tôi có thể sử dụng mã dưới đây trong Magento2?
$link = Mage::getUrl('*/*/*', array('_current'=>true, '_use_rewrite'=>true, '_query'=>$this_params));
Tôi có thể gọi Mage :: getUrl () trực tiếp bằng $ this-> trong Magento2 không?
Làm thế nào tôi có thể sử dụng mã dưới đây trong Magento2?
$link = Mage::getUrl('*/*/*', array('_current'=>true, '_use_rewrite'=>true, '_query'=>$this_params));
Câu trả lời:
Trong một khối, bạn có thể sử dụng $this->getUrl()với các tham số mà bạn biết chúng từ Magento 1. Trong một mẫu, sử dụng $block->getUrl()thay thế.
Các khối và mẫu bên ngoài, bạn cần truy cập \Magento\Framework\UrlInterface, vì vậy nếu nó chưa có sẵn trong lớp hiện tại, hãy thêm nó làm tham số của hàm tạo, gán nó cho $this->urlBuilder, sau đó sử dụng $this->urlBuilder->getUrl().
Bạn có thể chỉ cần gọi phương thức này trong magento 2 bằng cách sử dụng dưới đây,
//define query array pass to url
$query = ['str1' => 'value1', 'str2' => 'value2',];
$link = $block->getUrl('*/*/*', ['_current' => true, '_use_rewrite' => true, '_query' => $query]);
Bạn cũng có thể chuyển giá trị hành động thay vì */*/*trong url trên, như 'khách hàng / tài khoản / đăng nhập' theo hành động cần thiết của bạn.
Bạn có thể sử dụng điều này trong Magento 2 như
$block->getUrl('*/*/*', ['_current' => true, '_use_rewrite' => true])