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])