J'essaie de récupérer l'URL de la page actuelle dans un fichier de modèle, mais je ne sais pas comment le faire dans Magento 2.0.
Est-ce que quelqu'un sait comment l'obtenir? (gardez à l'esprit que je travaille dans un fichier modèle/phtml)
solution universelle : fonctionne de n'importe où, pas seulement à partir d'un modèle:
/** @var \Magento\Framework\UrlInterface $urlInterface */
$urlInterface = \Magento\Framework\App\ObjectManager::getInstance()->get('Magento\Framework\UrlInterface');
$urlInterface->getCurrentUrl();
A partir d'un modèle, vous pouvez faire plus simple : en utilisant la méthode \Magento\Framework\View\Element\AbstractBlock::getUrl()
:
$block->getUrl();
Un exemple du noyau: https://github.com/magento/magento2/blob/2.0.0/app/code/Magento/Customer/view/frontend/templates/logout.phtml#L14
N'utilisez pas l'instance du gestionnaire d'objets directement dans les fichiers
Avec objectManager
$urlInterface = \Magento\Framework\App\ObjectManager::getInstance()->get('Magento\Framework\UrlInterface');
$urlInterface->getCurrentUrl();
avec la méthode d'usine
protected $_urlInterface;
public function __construct(
...
\Magento\Framework\UrlInterface $urlInterface
...
) {
$this->_urlInterface = $urlInterface;
}
public function getUrlInterfaceData()
{
echo $this->_urlInterface->getCurrentUrl();
echo $this->_urlInterface->getUrl();
echo $this->_urlInterface->getUrl('test/test2');
echo $this->_urlInterface->getBaseUrl();
}
Sans Object Manager, vous pouvez utiliser la ligne ci-dessous pour obtenir currentURL
sur le fichier templates
$this->getUrl('*/*/*', ['_current' => true, '_use_rewrite' => true])