以下均在basic框架中进行的操作,advanced版可以参考
视图文件:
1 2 3 4 5 6 7 | //以下common.php位于views下的layouts文件夹中,about.php位于views文件夹下面的hello文件夹中 class HelloController extends Controller{ public $layout = 'common' ; //视图文件夹中的common.php,在其中输出$content public function actionIndex(){ return $this ->render( 'about' ); //视图文件夹中的about.php内容返回到一个$content变量中 } } |
视图文件中的转义
1 2 3 4 5 6 | //对JS等代码进行转义仍显示在前端 use yii\helpers\Html; Html::encode() //对JS等代码进行处理不显示在前端 use yii\helpers\HtmlPurifier; HtmlPurifier::process() |
HelloController.php(访问路径web/index.php?r=hello/index)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | namespace app\controllers; use yii\web\Controller; class HelloController extends Controller{ //方法前要加action public function actionIndex(){ // get\post相关方法需使用全局命名空间YII // $request = \YII::$app->request; // 下面的DEFAULT_VALUE为name不存在时所显示的值 // $request->post('name','DEFAULT_VALUE'); // 判断是否通过GET方式请求,同理isPost // if($request->isGet){ // echo $request->get('id','DEFAULT_VALUE'); // } // //获取用户IP地址 // echo $request->userIp; // 响应设置 $res = \YII:: $app ->response; // $res->headers->add('pragma', 'no-cache'); // $res->headers->set('pragma','max-age=5'); // $res->headers->remove('pragma'); //跳转 // $res->redirect('http://www.baidu.com',302); // $this->redirect("http://alanhou.org",301); //下载文件 // $res->headers->add('content-disposition','attachment; filename="a.jpg"'); // $res->sendFile('./robots.txt'); // $res->statusCode = '404'; } } |
Session相关
1 2 3 4 5 6 7 8 9 10 11 | $session = \YII:: $app ->session; $session ->open(); //判断session是否开启 // if($session->isActive){ // echo "session is active"; // } // 方法一:$session->set('user','Alan'); // 方法二:$session['user'] = 'Alan'; // echo $session->get('user'); // $session->remove('user'); // unset($session['user']); |
Cookie相关
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | namespace app\controllers; use yii\web\Controller; use yii\web\Cookie; class HelloController extends Controller{ public function actionIndex(){ // $cookies = \YII::$app->response->cookies; // $cookie_data = array('name'=>'user', 'value'=>'Alan'); // $cookies->add(new Cookie($cookie_data)); // $cookies->remove('user'); $cookie = \YII:: $app ->request->cookies; //DEFAULT_VALUE为user这个cookie不存在时默认显示的值 echo $cookie ->getValue( 'user' , 'DEFAULT_VALUE' ); } } |
Model文件-操作数据库
1.在config/db.php配置数据库信息
2.models下创建一个Test.php,用于操作test表
1 2 3 4 5 6 | namespace app\models; use yii\db\ActiveRecord; class Test extends ActiveRecord{ } |
3.在controller的文件中进行操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | //首先引入: use app\models\Test; //在方法中进行代码书写 [php] //**查询数据** // $sql = 'SELECT * FROM test WHERE id=1'; // $results = Test::findBySql($sql)->all(); //当用户传入值时可通过占位符:id形式防止sql注入 // $sql = 'SELECT * FROM test WHERE id=:id'; // $results = Test::findBySql($sql, array(':id'=>'1 or 1=1'))->all(); //如果是id>1则将where修改为where(['>','id',1]) //id>=1 and id<=2 where('between', 'id', 1, 2) //默认返回对象的形式,比较占用资源,可以添加asArray()转换成数组 $results = Test::find()->where(['id'=>1])->asArray()->all(); print_r( $results ); //批量查询 foreach (Test::find()->batch(2) as tests){ print_r( $tests ); } //**删除数据** // 方法一 // $results = Test::find()_>where(['id'=>2])-all(); // $results[0]->delete(); //方法二 Test::deleteAll( 'id>=:id' , array ( ':id' =>2)); |
增加数据时为保证安全通常会进行数据的检测,详细内容可参考 http://www.yiichina.com/doc/guide/2.0/tutorial-core-validators
以下简单的在models/Test.php加入代码进行验证
1 2 3 4 5 6 7 8 | class Test extends ActiveRecord{ public function rules(){ return [ [ 'id' , 'integer' ], [ 'title' , 'string' , 'length' =>[0,10]] ]; } } |
controller文件中:
1 2 3 4 5 6 7 8 9 | // 增加数据 $test = new Test; $test ->id = '1' ; $test ->title = 'blahblah' ; $test ->validate(); if ( $test ->hasErrors()){ die ( "ERROR" ); } $test ->save(); |
修改数据
1 2 3 4 | // 修改数据 $test = Test::find()->where([ 'id' =>1])->one(); $test ->title = 'title 1 modified' ; $test ->save(); |
Composer安装
1 2 3 | curl -sS http: //install.phpcomposer.com/installer | php php composer.phar global require "fxp/composer-asset-plugin:~1.1.1" php composer.phar create-project --prefer-dist yiisoft/yii2-app-basic 2.0.7 |