参考文献:http://www.manks.top/document/install.html
配置项参考:http://www.manks.top/document/yii2-blog-config.html
yii安装条件:
1 | ①php是PHP 5.4 以上版本 |
在ubuntu下安装PDO PHP,可以参考http://blog.csdn.net/mrwangweijin/article/details/76152693
修改配置文件
先安装mysql,我的版本是php7.0;然后执行以下命令1
2
3
4cd /etc/php/7.0/cli //进入配置文件目录
vim php.ini //vim打开配置文件
extension=php_pdo_mysql.dll //去掉extensions前面的;号
sudo service apache2 restart //重启服务就行了。
若是不知道是否安装好了,可以在www目录下放一个1.php1
2
3
4
5
6
7
8
9
10
11<?php
$dbms='mysql'; //数据库类型
$host='localhost'; //数据库主机名
$dbName='mysql'; //使用的数据库
$user='root'; //数据库连接用户名
$pass=''; //对应的密码
$dsn="$dbms:host=$host;dbname=$dbName";
try {
$dbh = new PDO($dsn, $user, $pass); //初始化一个PDO对象
echo "连接成功<br/>";}
?>
运行输出 连接成功 就可以了。
准备工作做好了,现在可以开始安装yii了。1
2
3
4
5
6①在官网(http://www.yiiframework.com/download/)下载一份高级版本(advanced),与其对应的是basic版本。advanced自带多应用,其实就是可以直接在这个版本上配置多个应用,比如frontend(前台应用),backend(后台应用),console(命令行应用)以及api应用。basic还得手动配置,麻烦一些。
②解压后拷贝advanced目录放到web(linux下就是www/html)可访问目录,文件名advanced,不做改动
③在linux下,切换到advanced目录执行php init命令进行初始化
④回车后这里会让选择开发环境 0开发环境 1生产环境 这里我们选择0 开发环境,输入后回车,会让输入yes或者no进行确认,输入yes确认即可
⑤ok了之后,切换到根目录下,执行命令composer install,这里的根目录指的是common目录的同级目录。//但是这一步骤,我显示的是没有composer这个命令
⑥验证下是否安装成功了。在apache下运行localhost/advanced/frontend/web/,界面上显示一个大大的Congratulations即表示安装成功!
参考文献:http://www.manks.top/document/easy_blog_manage_system.html
1.我们先把数据库配置一下
打开 common\config\main-local.php
文件,在 components 下面的db配置,将dbname改成已经创建好的数据库名字,username和password改成自己连接数据库的时候的用户名和密码。
感觉在ubuntu下面的时候,权限给的是真的少,yii都没有权限,需要用到的文件什么的给权限就好,chmod命令很方便的./yii migrate/create create_blog_table
,用这个命令可以生成的迁移文件位于 advanced\console\migrations
目录,yii migrate 命令已经在迁移文件中为我们添加了主键ID和表名,接下来我们要打开该文件修改表名以及添加更我们需要的列到数据表
表创建好之后使用./yii migrate
命令,中间会让我们确认,yes后回车即可,该命令会为我们创建迁移文件(console\migrations目录)中定义的所有数据表,执行完该命令打开数据库会发现,我们的blog表已经创建成功了,其中包含了我们在migration中定义的列。 在我们创建的数据库中还有uesr和migration这两个表,其中migration这个表中记录了我们使用它创建表的命令。
在目前的advanced版本中,实际上配置文件有4个,分别是common\config\main.php
和common\config\main-local.php
以及应用的main.php
和main-local.php
,这四个配置文件是有优先级的,按照项目入口文件内加载的顺序来看,其优先级为 app\config\main-loca.php > app\config\main.php > common\config\main-local.php > common\config\main.php
,这些配置文件的区分对比可按照下面2条来理解
①app针对具体应用的配置,common是公共的配置,多个项目共同的配置可以写在common\config内;
② 实际的开发环境可能包括本地环境、测试环境、正式环境,以这三种环境为例,main.php可以作为三者都可能存在的配置,main-local.php可以作为当前环境独有的配置,比如本地的main-local和测试的、正式的main-local都是独立的,互不影响,其独立而互不影响的前提就在于git的ignore文件。
2.使用gii生成AR模型和CRUD
gii是yii2中的一个强大的组件,是一种高度可定制和可扩展的代码生成工具。使用它可以大幅提高我们的开发效率。如果在安装的过程中,选择的是开发环境,gii默认是开启的。也就是说无需再进行配置便可以使用,也可以打开文件 advanced\frontend\config\main-local.php
查看配置代码。
打开 http://localhost/advanced/frontend/web/index.php?r=gii可以直接访问gii这个模块。
- 2.1生成AR模型类
点击页面上的Model Generator start,像下面这样生成AR模型类。
其中Namespace不要用app\models,要不下面生成CRUD会出错,然后点击Preview之后,再点击Generate,若是出现成功单词就创建成功了,刚开始一直创建不成功,我后来尝试先在/var/www/html/advanced/common/models/下创建Blog.php依旧不行,后来大佬提醒我可能是权限不够,我就把全部权限都给advanced这个文件了,然后就好了。 - 2.2生成CRUD代码
CRUD这四个字母分别是Create Read Update Delete,也就是创建、读取、更新和删除的意思。接着点击左侧菜单CRUD Generator像下面这样生成crud
按照以上操作,我们会在如下相关目录生成9个文件1
2
3
4
5
6
7
8
9common\models\Blog.php
common\models\BlogSearch.php
frontend\controllers\BlogController.php
frontend\views\blog\ _form.php
frontend\views\blog\ _search.php
frontend\views\blog\create.php
frontend\views\blog\index.php
frontend\views\blog\update.php
frontend\views\blog\view.php
然后可以通过。访问http://localhost/advanced/frontend/web/index.php?r=blog
看到blog具体页面信息。
3.添加博客
以上通过gii我们便已经完成了博客管理的增删改查。实际开发中,最常见的便是共用一套配置的方法了,比如我们在common\config\main-local.php
文件中对数据库配置好,当前项目下所有的应用都可以同数据库交互了。
- 3.1首先已经在
common\models
下定类模型blog,为了各个应用操作方便,为单个应用创建一个继承该基类的模型类,如frontend\models\BlogForm
,backend\models\BlogForm
,操作前台的BlogForm完全不会影响到后台的模型类,与此同时前后台还可以通过基类common\models\Blog有共同用法。
操作方法:
【1】拷贝common\models\Blog.php
到frontend\models\BlogForm.php
(自己创建的)后,打开BlogForm.php
文件稍作修改:1
2
3
4①命名空间(namespace)修改为 namespace frontend\models;
②增加需要继承的父类 use common\models\Blog;
③类名修改为BlogForm
④继承类修改为Blog//这个继承类若是不修改的话,下面的修改其他函数,会出现调用问题。修改成这样class BlogForm extends Blog
【2】打开frontend\controllers\BlogController.php
文件:
①在控制器文件BlogController.php文件顶部,namespace下面添加use frontend\models\BlogForm
;
②修改actionCreate方法$model实例化的类为BlogForm, 即 $model = new BlogForm()
;
③修改findModel($id)函数中的($model = Blog::findOne($id)) !== null
) 中的Blog为BlogForm
- 3.2修改博客的显示方式
frontend\controllers\BlogController.php
的create方法我们可以看到,模版文件是通过
来调用的,然后我们找到跟frontend\views\blog\create.php
,views这里存放的基本上都是视图文件
这里引用了一个子视图文件_form,该文件位于create.php同级下,打开该文件后会发现一开始显示的表单原来在这里。
为了实现我们想要把字段显示为中文的标题内容,在BlogForm文件修改attributeLabels方法。而我们这里的label跟我们一开始用gii生成model时是否勾选Generate Labels from DB Comments一项有关。我们修改attributeLabels方法如下:
在_form.php文件中,表单的创建借助的是组件 ActiveForm ,表单提交默认的action是当前操作方法。yii2中利用该组件不仅可以快速方便的构建表单,而且还结合model+jquery实现了表单的各种验证,要对用户提交的数据进行验证,需要声明与需验证模型特性相关的验证规则。接下来我们修改BlogForm的rules方法,展示对标题设置为必填项,而且长度不能超过100个字符。
为了让我们的规则起作用,还需要调用yii\base\Model::validate()方法。该方法会返回一个布尔值。若没有通过,则通过 yii\base\Model::errors 属性获取相应的报错信息。我们稍微对actionCreate进行修改, 比如像下面这样:
然后添加数据就行了。
- 3.3代码列表页数据的由来。
通过frontend\models\BlogSearch
(将common\models\BlogSearch.php拷贝到frontend\models\BlogSearch)的search提供的,打开frontend\models\BlogSearch.php文件1
2
3
4①增加 use frontend\models\BlogForm;
②继承类修改为 BlogForm
③search方法中Blog::find()修改为BlogForm::find()
④将#use common\models\Blog;这一行注释掉,或者修改blog.php里面的数据为中文
关于博客数据的删除,可以手动点击右侧按钮直接进行删除即可。该动作会执行 BlogController的actionDelete操作,调用model的delete方法进行数据的删除,该删除属于数据直接从数据库中永久性删除。