Yii2与layuiadmin整合2

17.建立模板文件 /modules/users/views/user/create.php
添加以下内容

<?php
use yii\widgets\ActiveForm;
?>
<div class="layui-form" lay-filter="layuiadmin-form-admin" id="layuiadmin-form-admin">
    <?php $form = ActiveForm::begin();?>
    <div class="layui-form-item">
        <?= $form->field($model, 'username')
            ->textInput(['type' => 'text', 'lay-verify' => 'required','class' => 'layui-input','placeholder' => '用户名'])
            ->label('用户名');
        ?>
    </div>
    <div class="layui-form-item">
        <?= $form->field($model, 'password')
            ->textInput(['type' => 'password','id' => 'LAY-user-login-password', 'lay-verify' => 'required','class' => 'layui-input','placeholder' => '密码'])
            ->label('密码');
        ?>
    </div>

    <div class="layui-form-item">
        <button class="layui-btn layui-btn-fluid" lay-submit lay-filter="LAY-user-login-submit">注册</button>
    </div>

    <?php ActiveForm::end();?>
</div>

此时访问  http://yii2web.com/users/user/create 添加对应的用户信息

18.修改 /controllers/SiteController.php中的方法

  // 
    public function actionLogin()
    {
        $this->layout='empty';
        if (!Yii::$app->user->isGuest) {
            return $this->goHome();
        }

        $model = new LoginForm();
        if ($model->load(Yii::$app->request->post()) && $model->login()) {
            return $this->goBack();
        }

        $model->password = '';

        return $this->render('login', [
            'model' => $model,
        ]);


    }

19.修改公共模板  /views/layouts/main.php

<?php
use yii\helpers\Html;
use \yii\helpers\Url;
use app\assets\LayuiAsset;

LayuiAsset::register($this);
?>
<?php $this->beginPage() ?>
<!DOCTYPE html>
<html lang="<?= Yii::$app->language ?>">
<head>
    <meta charset="<?= Yii::$app->charset ?>">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <?= Html::csrfMetaTags() ?>
    <title><?= Html::encode($this->title) ?></title>
    <?php $this->head() ?>
</head>
<body class="layui-layout-body">
<?php $this->beginBody() ?>
<div id="LAY_app">
    <div class="layui-layout layui-layout-admin">
        <div class="layui-header">
            <!-- 头部区域 -->
            <ul class="layui-nav layui-layout-left">
                <li class="layui-nav-item layadmin-flexible" lay-unselect>
                    <a href="javascript:;" layadmin-event="flexible" title="侧边伸缩">
                        <i class="layui-icon layui-icon-shrink-right" id="LAY_app_flexible"></i>
                    </a>
                </li>
            </ul>
            <ul class="layui-nav layui-layout-right" lay-filter="layadmin-layout-right">
                <li class="layui-nav-item" lay-unselect>
                    <a href="javascript:;">
                        <cite>贤心</cite>
                    </a>
                    <dl class="layui-nav-child">
                        <dd><a lay-href="set/user/info.html">基本资料</a></dd>
                        <dd><a lay-href="set/user/password.html">修改密码</a></dd>
                        <hr>

                    <?php echo Html::beginForm(['/site/logout'], 'post', ['class' => 'form-inline']);
                    echo Html::submitButton(
                    '退出 (' . Yii::$app->user->identity->username . ')');
                    echo Html::endForm();
                    ?>
                    </dl>
                </li>


            </ul>
        </div>

        <!-- 侧边菜单 -->
        <div class="layui-side layui-side-menu">
            <div class="layui-side-scroll">
                <div class="layui-logo" lay-href="home/console.html">
                    <span>layuiAdmin</span>
                </div>

                <ul class="layui-nav layui-nav-tree" lay-shrink="all" id="LAY-system-side-menu" lay-filter="layadmin-system-side-menu">
                    <li data-name="home" class="layui-nav-item layui-nav-itemed">
                        <a href="javascript:;" lay-tips="主页" lay-direction="2">
                            <i class="layui-icon layui-icon-home"></i>
                            <cite>主页</cite>
                        </a>
                        <dl class="layui-nav-child">
                            <dd data-name="console" class="layui-this">
                                <a lay-href="home/console.html">控制台</a>
                            </dd>
                            <dd data-name="console">
                                <a lay-href="home/homepage1.html">主页一</a>
                            </dd>


                        </dl>
                    </li>


                </ul>
            </div>
        </div>




        <!-- 主体内容 -->
        <div class="layui-body" id="LAY_app_body">
            <div class="layadmin-tabsbody-item layui-show">
                <?= $content ?>
            </div>
        </div>

        <!-- 辅助元素,一般用于移动设备下遮罩 -->
        <div class="layadmin-body-shade" layadmin-event="shade"></div>
    </div>
</div>


<?php $this->endBody() ?>
<script>
    layui.config({
        base: '/assets/layuiadmin/' //静态资源所在路径
    }).extend({
        index: 'lib/index' //主入口模块
    }).use(['index']);
</script>
</body>
</html>
<?php $this->endPage() ?>

此时登陆成功后,显示出整个页面了
接下来,加用户登陆认证添加上去

20.运行 http://yii2web.com/gii/controller
生成

// Controller Class
app\controllers\BaseController

21. 修改文件 /controllers/BaseController.php

<?php

namespace app\controllers;

use Yii;
use yii\web\Controller;

class BaseController extends Controller
{
    public $layout = '@app/views/layouts/main';
    public $topMenu = [];
    public $leftMenu = [];
    // 无用权限控制的路由
    public $routeWhiteList = [
      'site/login',
      'site/error',
      'site/logout'
    ];

    public function beforeAction($action)
    {
        if(Yii::$app->user->isGuest && !in_array($this->route,$this->routeWhiteList)) {
            $this->redirect(['site/login']);
        }
        return parent::beforeAction($action);
    }
}

22. 修改 /controllers/SiteController.php
让其继承上面的 BaseController

// class SiteController extends Controller
// 修改为
class SiteController extends BaseController 
{
    // 
}

此时就必须先登陆才能操作了

23.头部导航,开发头部导航,新建文件 /config/menu.php
添加以下内容

<?php
return [
        'menu' => [
            ['label' => '主页',
                'id' => 'basic',
                'items' => [
                    ['label' => '主页概览','items' => [
                       ['label' => '主页展示','url' => '/site'],
                    ]],
                ],
            ],

            ['label' => '订单管理',
                'id' => 'orders',
                'items' => [
                    ['label' => '所有订单','items' => [
                        ['label' => '所有订单列表','url' => '/orders'],
                        ['label' => '所有退货订单列表','url' => '/all_url'],
                        ['label' => '所有作废订单列表','url' => '/all_url'],
                        ['label' => '所有完成订单列表','url' => '/all_url'],
                    ]],
                    ['label' => '亚马逊订单','items' => [
                        ['label' => '亚马逊订单列表','url' => '/url1'],
                        ['label' => '亚马逊退货订单列表','url' => '/url1'],
                        ['label' => '亚马逊作废订单列表','url' => '/url1'],
                        ['label' => '亚马逊完成订单列表','url' => '/url1'],
                    ]],
                    ['label' => '沃尔玛订单','items' => [
                        ['label' => '沃尔玛订单列表','url' => '/url1'],
                        ['label' => '沃尔玛退货订单列表','url' => '/url1'],
                        ['label' => '沃尔玛作废订单列表','url' => '/url1'],
                        ['label' => '沃尔玛完成订单列表','url' => '/url1'],
                    ]],
                ]],

            ['label' => '系统管理',
                'id' => 'system',
                'items' => [
                    ['label' => '权限管理','items' => [
                        ['label' => '角色管理','url' => '/system/role'],
                        ['label' => '权限列表','url' => '/system/permission'],
                        ['label' => '用户权限管理','url' => '/system/userPermission'],
                    ]],

                ]],
            ['label' => '用户管理',
                'id' => 'users',
                'items' => [
                    ['label' => '用户管理','items' => [
                        ['label' => '用户列表','url' => '/users/user'],
                    ]],

                ]],

        ],
    ];

24.继续完善上面的控制器模板
修改文件 /controllers/BaseController.php

    public function beforeAction($action)
    {
        if(Yii::$app->user->isGuest && !in_array($this->route,$this->routeWhiteList)) {
            $this->redirect(['/site/login']);
        }
        $menuFilePath = Yii::getAlias('@app/config/menu.php');
        $menuConfig = require_once $menuFilePath;
        $menus = $menuConfig['menu'];
        $this->topMenu = $menus;
        foreach ($menus as $row_menu) {
            $this->leftMenu[$row_menu['id']] = $row_menu['items'];
        }
        return parent::beforeAction($action);
    }

25. 修改模板  /views/layouts/main.php,为了方便处理,精简一些内容

<?php
use yii\helpers\Html;
use \yii\helpers\Url;
use app\assets\LayuiAsset;

LayuiAsset::register($this);
?>
<?php $this->beginPage() ?>
<!DOCTYPE html>
<html lang="<?= Yii::$app->language ?>">
<head>
    <meta charset="<?= Yii::$app->charset ?>">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <?= Html::csrfMetaTags() ?>
    <title><?= Html::encode($this->title) ?></title>
    <?php $this->head() ?>
</head>
<body class="layui-layout-body">
<?php $this->beginBody() ?>
<div id="LAY_app">
    <div class="layui-layout layui-layout-admin">
        <div class="layui-header">

            <!-- 头部区域 -->
            <ul class="layui-nav layui-layout-left">
                <li class="layui-nav-item layadmin-flexible" lay-unselect>
                    <a href="javascript:;" layadmin-event="flexible" title="侧边伸缩">
                        <i class="layui-icon layui-icon-shrink-right" id="LAY_app_flexible"></i>
                    </a>
                </li>
                <?php
                foreach ($this->context->topMenu as $item):
                    $menuUrl = $item['items'][0]['items'][0]['url'];
                    $layui_this = '';
                    if($this->context->module->id == $item['id']) {
                        $layui_this = 'layui-this';
                    }
                    ?>
                    <li class="layui-nav-item layui-hide-xs <?= $layui_this;?>" lay-unselect>
                        <?= Html::a($item['label'],$menuUrl,[
                            'data' => [
                                'method' => 'post'
                            ]
                        ])?>
                    </li>
                <?php endforeach;?>

            </ul>
            <ul class="layui-nav layui-layout-right" lay-filter="layadmin-layout-right">
                <li class="layui-nav-item">
                <?php echo Html::beginForm(['/site/logout'], 'post', ['class' => 'form-inline']);
                echo Html::submitButton(
                    '退出 (' . Yii::$app->user->identity->username . ')');
                echo Html::endForm();
                ?>
                </li>

            </ul>
        </div>

        <!-- 侧边菜单 -->
        <div class="layui-side layui-side-menu">
            <div class="layui-side-scroll">
                <div class="layui-logo" lay-href="home/console.html">
                    <span>layuiAdmin</span>
                </div>
                <?php
                    $leftMenuList = $this->context->leftMenu[$this->context->module->id];
                ?>
                <ul class="layui-nav layui-nav-tree" lay-shrink="all" id="LAY-system-side-menu" lay-filter="layadmin-system-side-menu">
                    <?php foreach ($leftMenuList as $row_menu): ?>
                    <li data-name="home" class="layui-nav-item layui-nav-itemed">
                        <a href="javascript:;" lay-tips="<?= $row_menu['label'];?>" lay-direction="2">
                            <i class="layui-icon layui-icon-home"></i>
                            <cite><?= $row_menu['label'];?></cite>
                        </a>
                        <dl class="layui-nav-child">
                            <?php foreach ($row_menu['items'] as $child_menu): ?>
                            <dd>
                                <a href="<?= $child_menu['url'];?>"><?= $child_menu['label'];?></a>
                            </dd>
                            <?php endforeach;?>

                        </dl>
                    </li>
                    <?php endforeach;?>
                </ul>
            </div>
        </div>

        <!-- 主体内容 -->
        <div class="layui-body" id="LAY_app_body">
            <div class="layadmin-tabsbody-item layui-show">
                <?= $content ?>
            </div>
        </div>

        <!-- 辅助元素,一般用于移动设备下遮罩 -->
        <div class="layadmin-body-shade" layadmin-event="shade"></div>
    </div>
</div>


<?php $this->endBody() ?>
<script>
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
</script>
</body>
</html>
<?php $this->endPage() ?>

26.修改各个模板,统一继承 BaseController
比如订单模模块 /modules/orders/controllers/DefaultController.php

class DefaultController extends Controller
// 修改为
class DefaultController extends BaseController

27. 以下开发用户功能,建立文件 /modules/users/views/user/index.php

<div class="layui-fluid">
    <div class="layui-card">

        <div class="layui-card-header layuiadmin-card-header-auto">
            <div class="layui-btn-group">
                <button class="layui-btn layui-btn-sm layui-btn-danger" id="listDelete">删 除</button>
                <a class="layui-btn layui-btn-sm" href="/users/user/create">添 加</a>
                <button class="layui-btn layui-btn-sm" id="memberSearch">搜索</button>
            </div>
            <div class="layui-form">
                <div class="layui-input-inline">
                    <input type="text" name="username" id="username" placeholder="用户名" class="layui-input">
                </div>
                <div class="layui-input-inline">
                    <input type="text" name="email" id="email" placeholder="邮箱" class="layui-input">
                </div>
                <div class="layui-input-inline">
                    <input type="text" name="phone" id="phone" placeholder="手机号码" class="layui-input">
                </div>
            </div>
        </div>

        <div class="layui-card-body">
            <table id="dataTable" lay-filter="dataTable"></table>
            <script type="text/html" id="options">
                <div class="layui-btn-group">
                    <a class="layui-btn layui-btn-sm" lay-event="edit">编辑</a>
                    <a class="layui-btn layui-btn-sm" lay-event="role">角色</a>
                    <a class="layui-btn layui-btn-sm" lay-event="permission">权限</a>
                    <a class="layui-btn layui-btn-danger layui-btn-sm " lay-event="del">删除</a>
                </div>
            </script>
        </div>

    </div>
</div>


<script>


    layui.use(['layer','table','form'],function () {
        var layer = layui.layer;
        var form = layui.form;
        var table = layui.table;

        //用户表格初始化
        var dataTable = table.render({
            elem: '#dataTable'
            ,height: 500
            ,url: "/users/user/user-data" //数据接口
            ,method: 'POST'
            ,page: true //开启分页
            ,cols: [[ //表头
                {checkbox: true,fixed: true}
                ,{field: 'id', title: 'ID', sort: true,width:80}
                ,{field: 'username', title: '用户名'}
                ,{field: 'email', title: '邮箱'}
                ,{field: 'phone', title: '手机号码'}
                ,{field: 'created_at', title: '创建时间', templet : '<div>{{layui.util.toDateString(d.created_at * 1000, "yyyy-MM-dd HH:mm:ss")}}</div>}}'}
                ,{field: 'updated_at', title: '更新时间', templet : '<div>{{layui.util.toDateString(d.updated_at * 1000, "yyyy-MM-dd HH:mm:ss")}}</div>}}'}
                ,{fixed: 'right', width: 320, align:'center', toolbar: '#options'}
            ]]
        });




        //监听工具条
        table.on('tool(dataTable)', function(obj){ //注:tool是工具条事件名,dataTable是table原始容器的属性 lay-filter="对应的值"
            var data = obj.data //获得当前行数据
                ,layEvent = obj.event; //获得 lay-event 对应的值
            if(layEvent === 'del'){
                layer.confirm('确认删除吗?', function(index){
                    $.post("/users/user/delete",{_method:'delete',ids:[data.id]},function (result) {
                        if (result.code==0){
                            obj.del(); //删除对应行(tr)的DOM结构
                        }
                        layer.close(index);
                        layer.msg(result.msg,{icon:6})
                    });
                });
            } else if(layEvent === 'edit'){
                location.href = '/users/user/update?id='+data.id;
            } else if (layEvent === 'role'){

            } else if (layEvent === 'permission'){

            }
        });

        //按钮批量删除
        $("#listDelete").click(function () {
            var ids = []
            var hasCheck = table.checkStatus('dataTable')
            var hasCheckData = hasCheck.data
            if (hasCheckData.length>0){
                $.each(hasCheckData,function (index,element) {
                    ids.push(element.id)
                })
            }
            if (ids.length>0){
                layer.confirm('确认删除吗?', function(index){
                    $.post("/users/user/delete",{_method:'delete',ids:ids},function (result) {
                        if (result.code==0){
                            dataTable.reload()
                        }
                        layer.close(index);
                        layer.msg(result.msg,{icon:6})
                    });
                })
            }else {
                layer.msg('请选择删除项',{icon:5})
            }
        })

        // 搜索
        $("#memberSearch").click(function () {
            var username = $("#username").val();
            var email = $("#email").val();
            var phone = $("#phone").val();
            dataTable.reload({
                where:{username:username,email:email,phone:phone},
                page:{curr:1}
            })
        })
    })




</script>

 

posted @ 2022-02-08 09:27  好记性还真不如烂笔头  阅读(331)  评论(0编辑  收藏  举报