Mohd Bashir
Mohd Bashir

Reputation: 979

YII2: How can I create a link/url in a Menu item to point to an external webpage instead of an action or view of my application

I am using the YII2 Menu Widget and did not find the solution to add attribute options like class , target on created link.

My code is below:

echo Menu::widget(
[
    'options' => [
        'class' => 'sidebar-menu'
    ],

    'items' => [

        [
            'label' => Yii::t('backend', 'Admin'),
            'url' => Yii::$app->homeUrl,
            'icon' => 'fa-list-alt',
            'options' => [
                'class' => 'treeview',
            ],
            'items' => [
                [
                    'label' => Yii::t('backend', 'External link'),
                    'url' => 'http://google.com',
                    'icon' => 'fa-list-alt',
                    'options' => [
                    'target' => '_blank',
                    ],
                ],
            ]
        ],                

    ]
]
 );

Option target is not added on generated link.

Upvotes: 1

Views: 13497

Answers (4)

user3136936
user3136936

Reputation: 311

Suggestions above do not seem to be working (in my case), an alternative solution is:

'linkOptions' => ['target' => '_blank']

For example

[
    'url' => \Yii::$app->user->identity->getBlogLink(),
    'linkOptions' => ['target' => '_blank']  ,
    'label' => \Yii::t('app', 'Blog')
]

Upvotes: 7

dom
dom

Reputation: 87

If you want to keep the icon in your menu:

'template'=> '<a href="{url}" target="_blank">{icon}{label}</a>'

As regards the class you must specify it in the options key:

[
    'label' => 'Debug', 
    'icon' => 'fa fa-dashboard', 
    'url' => ['/debug'],
    'options' => ['class' => 'special'],
    'template'=> '<a href="{url}" target="_blank">{icon}{label}</a>',
],

gives the following menu:

<li class="special">
    <a target="_blank" href="your_site_url_here/index.php?r=debug">
        <i class="fa fa-dashboard"></i>
        <span>Debug</span>
    </a>
</li>

Upvotes: 4

BHoft
BHoft

Reputation: 1663

add the target like below through the template setting. The Options you have set in your code are the Html Options of the li element and not the link options.

'items' => [
    [
       'label' => Yii::t('backend', 'External link'),
       'url' => 'http://google.com',
       'icon' => 'fa-list-alt',
       'template'=> '<a href="{url}" target="_blank">{label}</a>',
    ],
]

Upvotes: 11

Insane Skull
Insane Skull

Reputation: 9368

You can add any url. For Example,

echo Menu::widget([
    'items' => [
        ['label' => 'Home', 'url' => ['http://www.google.com']],
        ['label' => 'About', 'url' => ['site/about']],
     ['label' => 'Contact', 'url' => ['site/contact']],
    ],
    'options' => [
                    'class' => 'navbar-nav nav',
                    'id'=>'navbar-id',
                    'style'=>'font-size: 14px;',
                    'data-tag'=>'yii2-menu',
                ],
]);

Upvotes: -1

Related Questions