yii2升级
- 如果缺少插件就先运行:
php composer.phar global require "fxp/composer-asset-plugin:~1.0.0"
打印出数据库操作的sql语句
查询语句->createCommand()->getRawSql();
比如:
$model->find()->where('id = 1')->createCommand()->getRawSql();
设置session前缀,区分前台和后台
在user前后台各自的配置文件user组件下添加配置:
后台: 'idParam'=>'_admin'
前台: 'idParam'=>'_member'
例子:
'components' => [
'user' => [
'identityClass' => 'common\models\User',
'idParam' => '_admin',
'enableAutoLogin' => true,
],
],
获取当前控制器和方法
获取当前控制器:
Yii::$app->controller->id;
获取当前访问方法:
Yii::$app->controller->action->id;
在表单中添加CSRF验证
一. 使用 ActiveForm,这个是 Yii 里面的一个 widget,会自动生成 csrf
二. 就是自己定义表单,然后在表单中增加 csrf
$request = Yii::$app->getRequest();
echo Html::hiddenInput($request->csrfParam, $request->getCsrfToken());
从控制器里面传递变量到布局文件layouts里的模板中
控制器中
Yii::$app->view->params['layoutData']='我是变量';
视图中
$this->params['layoutData'];
yii2提交原生表单
在当前控制器里面加上一个属性:
public $enableCsrfValidation = false;
将url斜线的加密取消 (默认是加密的)
1、找到 UrlManager.php 文件
2、再找到这行 $url = "$baseUrl?{$this->routeParam}=" . urlencode($route); 把 urlencode 函数去掉就可以了
安装yii2自带的user表
命令界面进入到项目目录 运行 yii migrate 就会在数据库生产自带的用户表。
运行前记得配置数据库相关信息。
YII2页面404
让页面404:
throw new \yii\web\HttpException(404, 'The requested Item could not be found.');
高级模板的404页面默认是 \frontend\views\site\error.php ,这个文件是前台的。后台也是在相应的位置,感觉默认的404不好 看,就修改这个页面的内容就好了。
gii指定IP访问
yii自带的gii默认只支持在本地环境通过 127.0.0.1 访问,当我们用线上环境时,可以通过指定允许访问IP来访问gii。
修改 /vendor/yiisoft/yii2-gii/Module.php 中的$allowedIPs 属性就可以了:
public $allowedIPs = ['127.0.0.1', '::1', '允许IP'];
// 在配置文件修改
$config['modules']['gii'] = [
'class' => 'yii\gii\Module',
// 允许访问的IP
'allowedIPs' => [
'127.0.0.1', '::1',
'113.205.78.158'
]
];
模板里注册js代码块
<?php $this->beginBlock('js_end') ?>
......
<?php $this->endBlock() ?>
<?php $this->registerJs($this->blocks['js_end'], $this::POS_END); ?>