yii2高级模板安装和yii migrate的使用

本文详细介绍了如何使用composer安装yii2高级模板,并进行init初始化。接着讲解了如何利用yii migrate命令创建数据库表,以及在Windows环境下运行Yii命令的方法。此外,文章还涉及了RBAC权限配置,包括所需的数据库表和初始化授权数据的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.通过composer 安装高级版

C:wampwwwyii>composer create-project --prefer-dist yiisoft/yii2-app-advanced advanced   


2. 进入 advanced 目录中 执行 init 初始化

[php] view plain copy
 print?
  1. C:wampwwwyii>cd advanced  
  2. C:wampwwwyiiadvanced>init  
  3. Yii Application Initialization Tool v1.0  
  4.   
  5. Which environment do you want the application to be initialized in?  
  6.   
  7. [0] Development  
  8. [1] Production  
  9.   
  10. Your choice [0-1, or “q” to quit] 0  
  11.   
  12. Initialize the application under ‘Development’ environment? [yes|no] y  
  13.   
  14. Start initialization …  
  15.   
  16. generate backend/config/main-local.php  
  17. generate backend/config/params-local.php  
  18. generate backend/web/index-test.php  
  19. generate backend/web/index.php  
  20. generate common/config/main-local.php  
  21. generate common/config/params-local.php  
  22. generate console/config/main-local.php  
  23. generate console/config/params-local.php  
  24. generate frontend/config/main-local.php  
  25. generate frontend/config/params-local.php  
  26. generate frontend/web/index-test.php  
  27. generate frontend/web/index.php  
  28. generate yii  
  29. generate cookie validation key in backend/config/main-local.php  
  30. generate cookie validation key in frontend/config/main-local.php  
  31. chmod 0777 backend/runtime  
  32. chmod 0777 backend/web/assets  
  33. chmod 0777 frontend/runtime  
  34. chmod 0777 frontend/web/assets  
  35. chmod 0755 yii  
  36.   
  37. … initialization completed.  
windows环境下直接运行根目录下的init.bat命令。

3.到此为止我们配置好了 数据库联系信息 以及数据库,但是我们还没有表,我们使用 yii migrate 命令

[php] view plain copy
 print?
  1. C:wampwwwyiiadvanced>yii migrate  
  2. Yii Migration Tool (based on Yii v2.0.0)  
  3. Creating migration history table “migration”…done.  
  4. Total 1 new migration to be applied:  
  5. m130524_201442_init  
  6.   
  7. Apply the above migration? (yes|no) [no]:y  
  8. *** applying m130524_201442_init  
  9. > create table {{%user}} … done (time: 0.031s)  
  10. *** applied m130524_201442_init (time: 0.055s)  
  11.   
  12. Migrated up successfully.  

在windows下打卡cmd命令窗口,切换到Yii项目所在目录(包含Yii.bat),就可以在cmd中运行Yii命令了。

使用Yii migrate命令执行sql语句:

也可以在输入./yii查看有哪些命令可用。

直接运行yii migrate会自动找到console/migrations下的*_init.php。

4.RBAC权限

以下代码展示使用 yii\rbac\DbManager 时如何在应用配置文件中配置 authManager

return [
    // ...
    'components' => [
        'authManager' => [
            'class' => 'yii\rbac\DbManager',
        ],
        // ...
    ],
];

DbManager 使用4个数据库表存放它的数据:

  • yii\rbac\DbManager::$itemTable: 该表存放授权条目(译者注:即角色和权限)。默认表名为 "auth_item" 。
  • yii\rbac\DbManager::$itemChildTable: 该表存放授权条目的层次关系。默认表名为 "auth_item_child"。
  • yii\rbac\DbManager::$assignmentTable: 该表存放授权条目对用户的指派情况。默认表名为 "auth_assignment"。
  • yii\rbac\DbManager::$ruleTable: 该表存放规则。默认表名为 "auth_rule"。

继续之前,你需要在数据库中创建这些表。你可以使用存放在 @yii/rbac/migrations 目录中的数据库迁移文件来做这件事(译者注:根据本人经验,最好是将授权数据初始化命令也写到这个 RBAC 数据库迁移文件中):

yii migrate --migrationPath=@yii/rbac/migrations

现在可以通过 \Yii::$app->authManager 访问 authManager 。

5.

如果你的权限层次结构不会发生改变,而且你的用户数是恒定的,你可以通过 authManager 提供的 API 创建一个 控制台命令 一次性初始化授权数据:

<?php
namespace app\commands;

use Yii;
use yii\console\Controller;

class RbacController extends Controller
{
    public function actionInit()
    {
        $auth = Yii::$app->authManager;

        // 添加 "createPost" 权限
        $createPost = $auth->createPermission('createPost');
        $createPost->description = 'Create a post';
        $auth->add($createPost);

        // 添加 "updatePost" 权限
        $updatePost = $auth->createPermission('updatePost');
        $updatePost->description = 'Update post';
        $auth->add($updatePost);

        // 添加 "author" 角色并赋予 "createPost" 权限
        $author = $auth->createRole('author');
        $auth->add($author);
        $auth->addChild($author, $createPost);

        // 添加 "admin" 角色并赋予 "updatePost" 
		// 和 "author" 权限
        $admin = $auth->createRole('admin');
        $auth->add($admin);
        $auth->addChild($admin, $updatePost);
        $auth->addChild($admin, $author);

        // 为用户指派角色。其中 1 和 2 是由 IdentityInterface::getId() 返回的id (译者注:user表的id)
        // 通常在你的 User 模型中实现这个函数。
        $auth->assign($author, 2);
        $auth->assign($admin, 1);
    }
}

在用 yii rbac/init 执行了这个命令后,我们将得到下图所示的层次结构:

6.RbacController.php放在basic模板里面的commands文件夹下,放在advanced的console/controllers文件夹下,注意命名空间。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值