Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
Breadcrumbs.php
Go to the documentation of this file.
1 <?php
7 
10 
18 {
24  protected $_template = 'Magento_Theme::html/breadcrumbs.phtml';
25 
31  protected $_properties = ['label', 'title', 'link', 'first', 'last', 'readonly'];
32 
38  protected $_crumbs;
39 
45  protected $_cacheKeyInfo;
46 
50  private $serializer;
51 
57  public function __construct(
58  Template\Context $context,
59  array $data = [],
60  Json $serializer = null
61  ) {
62  parent::__construct($context, $data);
63  $this->serializer =
64  $serializer ?: \Magento\Framework\App\ObjectManager::getInstance()->get(Json::class);
65  }
66 
74  public function addCrumb($crumbName, $crumbInfo)
75  {
76  foreach ($this->_properties as $key) {
77  if (!isset($crumbInfo[$key])) {
78  $crumbInfo[$key] = null;
79  }
80  }
81 
82  if (!isset($this->_crumbs[$crumbName]) || !$this->_crumbs[$crumbName]['readonly']) {
83  $this->_crumbs[$crumbName] = $crumbInfo;
84  }
85 
86  return $this;
87  }
88 
96  public function getCacheKeyInfo()
97  {
98  if ($this->_cacheKeyInfo === null) {
99  $this->_cacheKeyInfo = parent::getCacheKeyInfo() + [
100  'crumbs' => base64_encode($this->serializer->serialize($this->_crumbs)),
101  'name' => $this->getNameInLayout()
102  ];
103  }
104  return $this->_cacheKeyInfo;
105  }
106 
112  protected function _toHtml()
113  {
114  if (is_array($this->_crumbs)) {
115  reset($this->_crumbs);
116  $this->_crumbs[key($this->_crumbs)]['first'] = true;
117  end($this->_crumbs);
118  $this->_crumbs[key($this->_crumbs)]['last'] = true;
119  }
120  $this->assign('crumbs', $this->_crumbs);
121 
122  return parent::_toHtml();
123  }
124 }
__construct(Template\Context $context, array $data=[], Json $serializer=null)
Definition: Breadcrumbs.php:57
addCrumb($crumbName, $crumbInfo)
Definition: Breadcrumbs.php:74