Commit 16280df6d10404895ffe285bc8a7e2c57fbd6fe2

Authored by alex
1 parent 098b35d6

Линк услуги не должен ссылатся сам на себя

Showing 2 changed files with 77 additions and 0 deletions   Show diff stats
frontend/views/layouts/main.php
... ... @@ -211,6 +211,8 @@
211 211 {
212 212 $test[$key]['label']=$item['label'];
213 213 $test[$key]['options'] = [ 'class' => 'active' ];
  214 + $test[$key]['url']= false;
  215 +
214 216  
215 217 }
216 218 elseif( \Yii::$app->request->url=='/' && $item['label']==\Yii::t('app', 'Prices'))
... ... @@ -230,6 +232,7 @@
230 232  
231 233  
232 234 ?>
  235 +
233 236 <?php echo Nav::widget(
234 237 [
235 238 'items' => $test,
... ...
frontend/widgets/Nav.php
... ... @@ -9,20 +9,94 @@
9 9 namespace frontend\widgets;
10 10  
11 11 use yii\helpers\Html;
  12 + use yii\helpers\ArrayHelper;
  13 +
12 14  
13 15 class Nav extends \yii\bootstrap\Nav
14 16 {
  17 +
  18 + # метод почти полностью повторяет родительский,
  19 + # различия работы см.в return
  20 + public function renderItem($item)
  21 + {
  22 + if (is_string($item)) {
  23 + return $item;
  24 + }
  25 + if (!isset($item['label'])) {
  26 + throw new InvalidConfigException("The 'label' option is required.");
  27 + }
  28 + $encodeLabel = isset($item['encode']) ? $item['encode'] : $this->encodeLabels;
  29 + $label = $encodeLabel ? Html::encode($item['label']) : $item['label'];
  30 + $options = ArrayHelper::getValue($item, 'options', []);
  31 + $items = ArrayHelper::getValue($item, 'items');
  32 + $url = ArrayHelper::getValue($item, 'url', '#');
  33 +
  34 + $linkOptions = ArrayHelper::getValue($item, 'linkOptions', []);
  35 +
  36 + if (isset($item['active'])) {
  37 + $active = ArrayHelper::remove($item, 'active', false);
  38 + } else {
  39 + $active = $this->isItemActive($item);
  40 + }
  41 +
  42 + if (empty($items)) {
  43 + $items = '';
  44 + } else {
  45 + $linkOptions['data-toggle'] = 'dropdown';
  46 + Html::addCssClass($options, ['widget' => 'dropdown']);
  47 + Html::addCssClass($linkOptions, ['widget' => 'dropdown-toggle']);
  48 + if ($this->dropDownCaret !== '') {
  49 + $label .= ' ' . $this->dropDownCaret;
  50 + }
  51 + if (is_array($items)) {
  52 + $items = $this->isChildActive($items, $active);
  53 + $items = $this->renderDropdown($items, $item);
  54 + }
  55 + }
  56 +
  57 + if ($active) {
  58 + Html::addCssClass($options, 'active');
  59 + }
  60 +
  61 + return ($url!=='')?
  62 + Html::tag('li', Html::a($label, $url, $linkOptions) . $items, $options)
  63 + : Html::tag('li', Html::a($label, null, $linkOptions) . $items, $options)
  64 + ;
  65 + }
  66 +
  67 +
  68 +
  69 +
  70 +
  71 +
  72 +
15 73 public function init()
16 74 {
  75 +
  76 + foreach ($this->items as &$item)
  77 + {
  78 + if($item['url']===false)$item['url']='';
  79 + }
  80 +
  81 +
17 82 if ($this->route === null && \Yii::$app->controller !== null) {
18 83 $this->route = \Yii::$app->controller->getRoute();
  84 +
19 85 }
  86 +
20 87 if ($this->params === null) {
21 88 $this->params = \Yii::$app->request->getQueryParams();
  89 +
22 90 }
  91 +
23 92 if ($this->dropDownCaret === null) {
24 93 $this->dropDownCaret = '<span class="caret"></span>';
  94 +
25 95 }
  96 +
  97 +
  98 +
26 99 Html::addCssClass($this->options, []);
  100 +
27 101 }
28 102 }
29 103 \ No newline at end of file
... ...