widget使用

weixin_38067813 2019-09-11 03:17:14
使用widget遍历出了导航数据,想给他加一个target不知道怎么做 class MenuItemWidget extends \yii\base\Widget { public $menuType = false; public $options = []; private $menuItem = []; public function init() { $menuModels = MenuItem::find(); if (!empty($this->menuType)) { $menuModels->where(['type_id' => $this->menuType]); } $this->menuItem = $menuModels->orderBy('weight ASC')->all(); } public function run() { parent::run(); \app\assets\smartmenus\SmartMenusAsset::register($this->view); return Nav::widget([ 'options' => $this->options, 'items' => $this->makeTreeMenuItem($this->menuItem) ]); } private static function makeTreeMenuItem($items, $currentElementId = null, $keyFieldName = 'id', $labelFieldName = 'label', $parentFieldName = 'parent_id', $parentKeyName = 'items') { if (empty($items)) return []; $return = []; foreach ($items as $item) { if ($item->getAttribute($parentFieldName) == $currentElementId) { $router = json_decode($item->url, true); if (empty($router)) { $router = empty($item->url) ? '#' : $item->url; $router = Url::isRelative($router) ? [$router] : $router; } $url = Url::to($router); $_items = self::makeTreeMenuItem($items, $item->getAttribute($keyFieldName), $keyFieldName, $labelFieldName, $parentFieldName, $parentKeyName); $_item = ['label' => $item->getAttribute($labelFieldName), 'url' => $url, 'target' => '_blank', 'dropDownOptions' => ['class' => 'dropdown-menu']]; $_item = !empty($_items) ? array_merge($_item, [$parentKeyName => $_items]) : $_item; $return[] = $_item; } } return $return; } }
...全文
23 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

476

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧