最近一直忙其它的(其实是懒!),将《深入理解Yii2》看了一遍,一些当初没明白的稍微明了了点,然后又看yii2的图片上传等处理、富文本、restful什么的,但由于没进行到这里,只看也不管用啊,所以还是按照步骤一步步来,先说说前后台分离。(其实普通的内容管理站点用不着下面所说的彻底分离什么的,看看也无妨)
个人感觉前后台的情况有这么几种,首先是前后台是否是用一个验证体系,其次是前后台是否共用一个数据表。
一般来说下面三种比较常用吧:
A、共用一个验证体系和一个数据表。
B、两个验证体系和共用一个数据表。
C、两个验证体系和两个数据表。
Yii2高级版里面默认是A类型,即数据表一样,且一边登录/登出了,另一边也同样登录/登出,感觉这种结构比较适用于论坛这种,管理员也需要有与会员一样发帖回帖等功能,表字段也基本一致,(个人这样认为,毕竟接触的不多,网上也搜过不同的后台构建的话题,但是很少有详细讨论的),这种可以通过字段、权限等来区分前后台。而我们将要做的是C类型,像是一些电商网站,后台的管理员和前台的会员功能就相差太大了,且表字段差别也大,所以验证体系不一样,而且放两个数据表比较好。至于B类型算是C类型的简化版,C如果会设置的话,B也同理。
那我们先建立一个admin表,用来存放管理员数据,而会员仍然用原有的user表,这里用yii的migrate来创建,在Yii2初始化章节中有提到过,这里稍微详细说下:
1、yii2版本2.07以前用命令,即可在console/migrations目录下创建一个php文件,然后在此文件下编写创建表语句等等就可以了。
yii migrate/create admin
2、yii2版本2.07后,增加了更细致的分类,例如我已经创建了admin表,但少了一个status字段,那我可以直接用下面命令便会生成只增加字段的文件
yii migrate/create add_column_to_admin --fields=status:int(10):nontNull
生成:
<?phpuse yii/db/Migration;class m160501_053640_add_column_to_admin extends Migration{public function up(){$this->addColumn('admin', 'status', $this->int(10)->nontNull());}public function down(){$this->dropColumn('admin', 'status');}}
具体为什么会这样,我们看下原代码,在vendor/yiisoft/yii2/console/BaseMigrateController.php文件的actionCreate方法中:
} elseif (preg_match('/^add_(.+)_to_(.+)$/', $name, $matches)) {$content = $this->renderFile(Yii::getAlias($this->generatorTemplateFiles['add_column']), ['className' => $className,'table' => mb_strtolower($matches[2], Yii::$app->charset),'fields' => $this->fields]);}
新闻热点
疑难解答