php – 访客用户和登录用户Yii2的两种不同布局
作者:互联网
以前,我有main.php标题&页脚被宣布.哪个好.现在,我正在为Guest User& amp寻找2种不同的布局.注册用户.其中注册用户和管理员将具有不同的标题和&页脚.
我正在使用Yii2 Basic App.我创建了GuestUser.php& RegisteredUser.php在views / layouts /文件夹中.
访客用户表示用户尚未登录该应用程序.并且,注册用户表示用户已登录该应用程序.
现在,我的目录结构是这样的.
views
->layouts
->main.php
->GuestUser.php
->RegisteredUser.php
->site
现在,我如何使用GuestUser.php& RegisteredUser.php用于我的申请.至于现在,Application默认采用main.php.我该怎么控制呢?
GuestUser.php
<?php
use yii\helpers\Html;
use app\assets\LocalAsset;
LocalAsset::register($this);
?>
<?php $this->beginPage() ?>
<html lang="<?= Yii::$app->language ?>">
<head>
<meta charset="<?= Yii::$app->charset ?>">
<meta name="viewport" content="width=device-width, initial-scale=1">
<?= Html::csrfMetaTags() ?>
<title>ABC</title>
<?php $this->head() ?>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css">
<link href='https://fonts.googleapis.com/css?family=Open+Sans:400,600' rel='stylesheet' type='text/css'>
<link href='https://fonts.googleapis.com/css?family=Oswald:400,700' rel='stylesheet' type='text/css'>
</head>
<body>
<?php $current_controller_id = Yii::$app->controller->module->id;?>
<?php $this->beginBody() ?>
<?php $baseUrl = Yii::$app->params['baseUrl'];?>
<div class="container">
<nav class="navbar navbar-default navbar-fixed-top" role="navigation">
<div class="full-width grey bottom-header">
<div class="top_section-bg">
<div class="top_section container">
<ul>
<li>Have any Questions? </li>
<li>
<i class="fa fa-phone fa-lg"></i>
<span class="header-small-text">+1 1234567890 </span>
</li>
<li>
<i class="fa fa-envelope-o fa-lg"></i>
<span class="header-small-text"> <a href="mailto:hello@abc.com">hello@abc.com</a></span>
</li>
</ul>
</div>
</div>
<div class="menu-bg">
<div class="container">
<div class="navbar-header big_log" >
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="index.php"><img src="<?php echo $baseUrl;?>images/logo.png" class="logo" id="logo"></a>
</div>
<div class="collapse navbar-collapse menu_font" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav navbar-right">
<li class=""><a href="about.php">About</a></li>
</ul>
</div>
</div>
</div>
</div>
</nav>
</div>
<?=$content;?>
<section class="section11">
<div class="col-sm-12 copy">
©Copyright ABC, 2016. All Rights Reserved. <span class="privacy"> <a href="">Privacy</a></span> | <span class="privacy">
<a href=""> Terms & Conditions</a></span>
</ul>
</div>
</section>
<?php $this->endBody() ?>
</body>
</html>
<?php $this->endPage() ?>
RegisteredUser.php
<?php
use yii\helpers\Html;
use yii\bootstrap\Nav;
use yii\bootstrap\NavBar;
use yii\widgets\Breadcrumbs;
use app\assets\AppAsset;
use app\models\MyActiveRecord as AR;
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">
<?= Html::csrfMetaTags() ?>
<title>ABC</title>
<?php $this->head() ?>
</head>
<body>
<?php $current_controller_id = Yii::$app->controller->module->id;?>
<?php $this->beginBody() ?>
<div class="wrap">
<?php
$baseUrl = Yii::$app->params['baseUrl'];
NavBar::begin([
'brandLabel' => '<img src="'.$baseUrl.'logo/ABC.png" style="margin-top:-15px;">',
'brandUrl' => Yii::$app->homeUrl,
'options' => [
'class' => 'navbar-inverse navbar-fixed-top',
],
]);
NavBar::end();
?>
<footer class="footer">
<div class="container">
<p class="text-center">© ABC<?= date('Y') ?></p>
</div>
</footer>
<?php $this->endBody() ?>
</body>
</html>
<?php $this->endPage() ?>
我试过了
main.php
<?php if(Yii::$app->user->isGuest){?>
<?php $this->beginContent('@app/views/layouts/GuestUser.php'); ?>
<?=$content;?>
<?php $this->endContent();?>
<?php } else {?>
<?php $this->beginContent('@app/views/layouts/RegisteredUser.php'); ?>
<?=$content;?>
<?php $this->endContent();?>
<?}?>
任何帮助/提示/建议都很明显.请帮忙.
解决方法:
为整个应用程序实现此目的的一种方法可能是设置使用应用程序事件处理程序并配置布局文件:
//in web.php
$config = [
....
'on beforeRequest' => function ($event) {
Yii::$app->layout = Yii::$app->user->isGuest ?
'@app/views/layouts/GuestUser.php' : // or just use 'GuestUser' and
'@app/views/layouts/RegisteredUser.php'; // 'RegisteredUser' since the path
// and the extension are used by
// default
},
....
];
如果您只想在一个控制器中执行此操作,则可以在控制器中使用layout.只需使用控制器中的文件名(不带.php)覆盖此成员即可.
标签:yii2-basic-app,php,yii2 来源: https://codeday.me/bug/20191008/1874474.html