1.yii分为basic(基础应用)和advanced(高级应用)两个版本,basic版本结构简单(适合学习框架或者适合只写一个应用),advanced版本分两个应用 一个叫frontend(前台) backend(后台,每个应用(App)就类似basic,适合学过yii的.
2.配置多个数据库连接:
安装玩应用后,打开config/web.php,$config数组的components下有'db' => require(__DIR__ . '/db.php')引入数据库配置数组:
return [ 'class' => 'yii\db\Connection', 'dsn' => 'mysql:host=localhost;dbname=test', 'username' => 'root', 'password' => '', 'charset' => 'utf8', ];
在控制器中使用Yii:$app->db来获取db配置的数据库连接,那么如果我要配置另外一个数据库连接那就在components下写一个'testdb'=>数据库配置数组,同理Yii:$app->testdb来访问配置.
3.yii目前学到的数据库操作:
如第二点里配置了数据库的连接信息,所以可以这样操作:
Yii::$app->db#载入db数据库配置,获取默认数据库配置也可以用getDb()->createCommand($sql)->queryall(); 这样就可以查出一列数据了.要临时建立数据库可以这样操作 $db = new \yii\db\Connection([
'dsn' => 'mysql:host=$host;dbname=$db',
'username' => '$user',
'password' => '$password',
'charset' => 'utf8',
]);
4.建立一个静态工具类:
基本版:在根目录下建立common文件夹,在common文件夹建立一个Help.php文件,代码如下:
<?php //建立命名空间,指的是根目录下的common文件夹 namespace app\common; class Help{ public static function test() { echo '这是test方法的打印结果'; } } ?>
然后在要调用的控制器头部写入:use app\common\Help;意指调用common下的Help.php文件,然后在方法里调用Help::test()则可以调用方法,最后打印出字符串.
高级版:在根目录下的common文件夹下建立Help.php文件,然后在控制器里调用use common\tool\Help 意指在根目录下commone文件夹的tool文件夹下的Help类文件,其他同理.(如果要调用模块下的目录,就把common换成模块名).
如果要在Help类下使用数据库查询,要加一句use Yii;就可以连接数据库.
5.设置controller下的默认访问方法,定义public $defaultAction 属性即可,定义默认访问的controller则是:在web.php里定义'defaultRoute'=>'index'则默认为indexController;
6.设置的model类默认名字就是表名,如果要另外设置表名的话,定义方法:
public function tableName() { return 表名 ; }
7.如果要继承一个公共控制器,并且公共控制器里做初始化工作的话,不要用__construct 会报错,应该是破坏了 框架里的某些初始化操作,要用init.
8.yii2.0里的session使用:
$session = Yii::$app->session; //是否开启session(默认就是开启的,所以第一次是false,不知道是不是bug) var_dump($session->isActive); $session->set('aaaa', '123'); $session->close(); var_dump($session->get('aaaa'));
9.yii2.0里的cookie使用:
$cookies = Yii::$app->response->cookies; $cookies->add(new \yii\web\Cookie([ 'name' => 'user_info', 'value' => '123'), ])); $cookies = Yii::$app->request->cookies; $user_info = $cookies['user_info']; echo $user_info;
这里var_dump($user_info)是一个对象,echo 确是刚刚存的值.但是在另外一个action里就获取不到值了,那就要用到request组件了:
$cookies = Yii::$app->request->cookies; $user_info = $cookies['user_info']; echo ($user_info);
10.yii2.0的页面跳转:
$this->redirect(array("/login/index")); login为控制器名 index为方法名 要往外网跳请加上完整的网址.
11.生成url
\Yii::$app->urlManager->createUrl(['user/register' ]);//生成相对路径的url
\Yii::$app->urlManager->createAbsoluteUrl(['user/register' ]);//生成绝对路径的url