以下均在basic框架中进行的操作,advanced版可以参考
视图文件:
//以下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变量中
}
}
视图文件中的转义
//对JS等代码进行转义仍显示在前端 use yii\helpers\Html; Html::encode() //对JS等代码进行处理不显示在前端 use yii\helpers\HtmlPurifier; HtmlPurifier::process()
HelloController.php(访问路径web/index.php?r=hello/index)
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相关
$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相关
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表
namespace app\models;
use yii\db\ActiveRecord;
class Test extends ActiveRecord{
}
3.在controller的文件中进行操作
//首先引入:
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加入代码进行验证
class Test extends ActiveRecord{
public function rules(){
return [
['id', 'integer'],
['title', 'string', 'length'=>[0,10]]
];
}
}
controller文件中:
// 增加数据
$test = new Test;
$test->id = '1';
$test->title = 'blahblah';
$test->validate();
if($test->hasErrors()){
die("ERROR");
}
$test->save();
修改数据
// 修改数据 $test = Test::find()->where(['id'=>1])->one(); $test->title = 'title 1 modified'; $test->save();
Composer安装
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