123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Framework\View\Element\Html;
- /**
- * HTML anchor element block
- *
- * @method string getLabel()
- * @method string getPath()
- * @method string getTitle()
- *
- * @api
- * @since 100.0.2
- */
- class Link extends \Magento\Framework\View\Element\Template
- {
- /**
- * @var array
- */
- protected $allowedAttributes = [
- 'href',
- 'title',
- 'charset',
- 'name',
- 'target',
- 'hreflang',
- 'rel',
- 'rev',
- 'accesskey',
- 'shape',
- 'coords',
- 'tabindex',
- 'onfocus',
- 'onblur', // %attrs
- 'id',
- 'class',
- 'style', // %coreattrs
- 'lang',
- 'dir', // %i18n
- 'onclick',
- 'ondblclick',
- 'onmousedown',
- 'onmouseup',
- 'onmouseover',
- 'onmousemove',
- 'onmouseout',
- 'onkeypress',
- 'onkeydown',
- 'onkeyup', // %events
- ];
- /**
- * Prepare link attributes as serialized and formatted string
- *
- * @return string
- */
- public function getLinkAttributes()
- {
- $attributes = [];
- foreach ($this->allowedAttributes as $attribute) {
- $value = $this->getDataUsingMethod($attribute);
- if ($value !== null) {
- $attributes[$attribute] = $this->escapeHtml($value);
- }
- }
- if (!empty($attributes)) {
- return $this->serialize($attributes);
- }
- return '';
- }
- /**
- * Serialize attributes
- *
- * @param array $attributes
- * @param string $valueSeparator
- * @param string $fieldSeparator
- * @param string $quote
- * @return string
- */
- public function serialize($attributes = [], $valueSeparator = '=', $fieldSeparator = ' ', $quote = '"')
- {
- $data = [];
- foreach ($attributes as $key => $value) {
- $data[] = $key . $valueSeparator . $quote . $value . $quote;
- }
- return implode($fieldSeparator, $data);
- }
- /**
- * Render block HTML
- *
- * @return string
- */
- protected function _toHtml()
- {
- if (false != $this->getTemplate()) {
- return parent::_toHtml();
- }
- return '<li><a ' . $this->getLinkAttributes() . ' >' . $this->escapeHtml($this->getLabel()) . '</a></li>';
- }
- /**
- * Get href URL
- *
- * @return string
- */
- public function getHref()
- {
- return $this->getUrl($this->getPath());
- }
- }
|