Yii 2.0 高级模板后端中的静态菜单
Static menu in the Yii 2.0 advanced template back-end
我正在使用 Yii 2.0 高级模板,并且在后端想要这样的东西:
左侧的菜单应包含项目,当单击这些项目时,相应的页面将在右侧打开。左侧的菜单应该是静态的,并且在单击项目时不会失去焦点。
这意味着我可能需要使用局部视图?是否有一些 extension/widget 正在做我需要的事情?我是 Yii 的新手,所以我真的不确定如何解决这个问题。任何建议或想法将不胜感激。我确定在 Yii 中我不是唯一需要这个的人,但在 google.
上找不到任何东西
我认为最简单的方法是使用布局。您可以使用左侧的菜单和页面其余部分的主页来定义布局。
这可能是一个布局示例,例如:'mylayout.php'
<?php
use yii\helpers\Html;
use yii\bootstrap\Nav;
use yii\bootstrap\NavBar;
use yii\widgets\Breadcrumbs;
use frontend\assets\AppAsset;
/* @var $this \yii\web\View */
/* @var $content string */
AppAsset::register($this);
?>
<?php $this->beginPage() ?>
<!DOCTYPE html>
<html lang="<?= Yii::$app->language ?>">
<head>
<meta charset="<?= Yii::$app->charset ?>">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="shortcut icon" href="<?php echo Yii::$app->request->baseUrl; ?>/dfenx.ico" type="image/x-icon" />
<?= Html::csrfMetaTags() ?>
<title><?= Html::encode($this->title) ?></title>
<?php $this->head() ?>
</head>
<body>
<?php $this->beginBody() ?>
<div class="wrap">
<?php
NavBar::begin([
'brandLabel' => $this->title = Yii::$app->name ,
'brandUrl' => Yii::$app->homeUrl,
'brandOptions' =>[
'style' => 'font-family: palatino; font-size:24px;'
],
'options' => [
//'class' => 'navbar-inverse navbar-fixed-top',
'class' => 'navbar-default navbar-fixed-top',
],
]);
$menuItems = [
['label' => 'Home', 'url' => ['/site/index']],
['label' => 'About', 'url' => ['/site/about']],
['label' => 'Contact', 'url' => ['/site/contact']],
];
if (Yii::$app->user->isGuest) {
$menuItems[] = ['label' => 'Signup', 'url' => ['/user/register']];
$menuItems[] = ['label' => 'Login', 'url' => ['/user/login']];
} else {
$menuItems[] = [
'label' => 'Logout (' . Yii::$app->user->identity->username . ')',
'url' => ['/user/logout'],
'linkOptions' => ['data-method' => 'post']
];
}
echo Nav::widget([
'options' => ['class' => 'navbar-nav navbar-right'],
'items' => $menuItems,
]);
NavBar::end();
?>
<div class="container">
<?= Breadcrumbs::widget([
'links' => isset($this->params['breadcrumbs']) ? $this->params['breadcrumbs'] : [],
]) ?>
<div class='col-lg-3 col-md-3' >
<!-- here your left menu -->
</div>
<div class='col-lg-9 col-md-9' >
<!-- here your content page-->
<?= $content ?>
</div>
</div>
</div>
<footer class="footer">
<div class="container">
<p class="pull-left">© Digital FenX <?= date('Y') ?></p>
<p class="pull-right"><?php // Yii::powered() ?></p>
</div>
</footer>
<?php $this->endBody() ?>
</body>
</html>
<?php $this->endPage() ?>
在控制器中你可以这样设置你想要使用的布局
public function actionYourAction()
{
$this->layout = 'mylayout';
return $this->render(ourView', [
'model' =>$model,
'dataProvider' => $provider,
]);
}
我正在使用 Yii 2.0 高级模板,并且在后端想要这样的东西:
左侧的菜单应包含项目,当单击这些项目时,相应的页面将在右侧打开。左侧的菜单应该是静态的,并且在单击项目时不会失去焦点。
这意味着我可能需要使用局部视图?是否有一些 extension/widget 正在做我需要的事情?我是 Yii 的新手,所以我真的不确定如何解决这个问题。任何建议或想法将不胜感激。我确定在 Yii 中我不是唯一需要这个的人,但在 google.
上找不到任何东西我认为最简单的方法是使用布局。您可以使用左侧的菜单和页面其余部分的主页来定义布局。
这可能是一个布局示例,例如:'mylayout.php'
<?php
use yii\helpers\Html;
use yii\bootstrap\Nav;
use yii\bootstrap\NavBar;
use yii\widgets\Breadcrumbs;
use frontend\assets\AppAsset;
/* @var $this \yii\web\View */
/* @var $content string */
AppAsset::register($this);
?>
<?php $this->beginPage() ?>
<!DOCTYPE html>
<html lang="<?= Yii::$app->language ?>">
<head>
<meta charset="<?= Yii::$app->charset ?>">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="shortcut icon" href="<?php echo Yii::$app->request->baseUrl; ?>/dfenx.ico" type="image/x-icon" />
<?= Html::csrfMetaTags() ?>
<title><?= Html::encode($this->title) ?></title>
<?php $this->head() ?>
</head>
<body>
<?php $this->beginBody() ?>
<div class="wrap">
<?php
NavBar::begin([
'brandLabel' => $this->title = Yii::$app->name ,
'brandUrl' => Yii::$app->homeUrl,
'brandOptions' =>[
'style' => 'font-family: palatino; font-size:24px;'
],
'options' => [
//'class' => 'navbar-inverse navbar-fixed-top',
'class' => 'navbar-default navbar-fixed-top',
],
]);
$menuItems = [
['label' => 'Home', 'url' => ['/site/index']],
['label' => 'About', 'url' => ['/site/about']],
['label' => 'Contact', 'url' => ['/site/contact']],
];
if (Yii::$app->user->isGuest) {
$menuItems[] = ['label' => 'Signup', 'url' => ['/user/register']];
$menuItems[] = ['label' => 'Login', 'url' => ['/user/login']];
} else {
$menuItems[] = [
'label' => 'Logout (' . Yii::$app->user->identity->username . ')',
'url' => ['/user/logout'],
'linkOptions' => ['data-method' => 'post']
];
}
echo Nav::widget([
'options' => ['class' => 'navbar-nav navbar-right'],
'items' => $menuItems,
]);
NavBar::end();
?>
<div class="container">
<?= Breadcrumbs::widget([
'links' => isset($this->params['breadcrumbs']) ? $this->params['breadcrumbs'] : [],
]) ?>
<div class='col-lg-3 col-md-3' >
<!-- here your left menu -->
</div>
<div class='col-lg-9 col-md-9' >
<!-- here your content page-->
<?= $content ?>
</div>
</div>
</div>
<footer class="footer">
<div class="container">
<p class="pull-left">© Digital FenX <?= date('Y') ?></p>
<p class="pull-right"><?php // Yii::powered() ?></p>
</div>
</footer>
<?php $this->endBody() ?>
</body>
</html>
<?php $this->endPage() ?>
在控制器中你可以这样设置你想要使用的布局
public function actionYourAction()
{
$this->layout = 'mylayout';
return $this->render(ourView', [
'model' =>$model,
'dataProvider' => $provider,
]);
}