qq3737002
- qq3737002 回答了问题 用过Yii2-admin来讨论个问题
可否加上应用ID,例如/backend/site/index,在控制器的时候,再把/backend加上去用以区分
- qq3737002 发布了教程如何使用已经定义好的前端资源包
- qq3737002 发布了教程屏蔽 jquery 资源包
直接给你源码你明悟吧
<?php /** * @link http://www.yiiframework.com/ * @copyright Copyright (c) 2008 Yii Software LLC * @license http://www.yiiframework.com/license/ */ namespace backend\assets; use yii\web\AssetBundle; /** * Asset bundle for the Twitter bootstrap css files. * * @author Qiang Xue <qiang.xue@gmail.com> * @since 2.0 */ class BjuiAsset extends AssetBundle { // 源路径对应的物理目录 /vendor/bower/bjui // 应用运行时会直接发布到 @web/assets 下,对应物理目录 /backend/web/assets public $sourcePath = '@bower/bjui'; // 指定页面要引入的 css , 也可以后期通过 registerCssFile 引入 public $css = [ // bootstrap - css 'themes/css/bootstrap.css', // core - css 'themes/css/style.css', 'themes/css/doc.css', 'themes/blue/core.css', // plug - css 'plugins/kindeditor_4.1.10/themes/default/default.css', 'plugins/colorpicker/css/bootstrap-colorpicker.min.css', 'plugins/niceValidator/jquery.validator.css', 'plugins/bootstrapSelect/bootstrap-select.css', 'plugins/syntaxhighlighter-2.1.382/styles/shCore.css', 'plugins/syntaxhighlighter-2.1.382/styles/shThemeEclipse.css', // other 'themes/css/FA/css/font-awesome.min.css', 'plugins/uploadify/css/uploadify.css', ]; // 指定页面要引入的 js , 也可以后期通过 registerJsFile 引入 public $js = [ // jquery 'js/jquery-1.7.2.min.js', 'js/jquery.cookie.js', // BJUI.all 分模块压缩版 'js/bjui-all.js', // plugins // swfupload for uploadify && kindeditor 'plugins/swfupload/swfupload.js', // kindeditor 'plugins/kindeditor_4.1.10/kindeditor-all.min.js', 'plugins/kindeditor_4.1.10/lang/zh_CN.js', // colorpicker 'plugins/colorpicker/js/bootstrap-colorpicker.min.js', // ztree 'plugins/ztree/jquery.ztree.all-3.5.js', // nice validate 'plugins/niceValidator/jquery.validator.js', 'plugins/niceValidator/jquery.validator.themes.js', // bootstrap plugins 'plugins/bootstrap.min.js', 'plugins/bootstrapSelect/bootstrap-select.min.js', 'plugins/bootstrapSelect/defaults-zh_CN.min.js', // icheck 'plugins/icheck/icheck.min.js', // dragsort 'plugins/dragsort/jquery.dragsort-0.5.1.min.js', // HighCharts // 'plugins/highcharts/highcharts.js', // 'plugins/highcharts/highcharts-3d.js', // 'plugins/highcharts/themes/gray.js', // ECharts // 'plugins/echarts/echarts.js', // other plugins 'plugins/other/jquery.autosize.js', 'plugins/uploadify/scripts/jquery.uploadify.min.js', 'plugins/download/jquery.fileDownload.js', 'plugins/syntaxhighlighter-2.1.382/scripts/brush.js', ]; }
<?php $this->registerCssFile('http://b-jui.com/themes/css/ie7.css', ['condition' => 'lte IE7'])?>
- qq3737002 发布了教程自定义前端资源包(Asset)
- qq3737002 回答了问题 如果定义前端静态资料路径
直接给你源码你明悟吧
<?php /** * @link http://www.yiiframework.com/ * @copyright Copyright (c) 2008 Yii Software LLC * @license http://www.yiiframework.com/license/ */ namespace backend\assets; use yii\web\AssetBundle; /** * Asset bundle for the Twitter bootstrap css files. * * @author Qiang Xue <qiang.xue@gmail.com> * @since 2.0 */ class BjuiAsset extends AssetBundle { // 源路径对应的物理目录 /vendor/bower/bjui // 应用运行时会直接发布到 @web/assets 下,对应物理目录 /backend/web/assets public $sourcePath = '@bower/bjui'; // 指定页面要引入的 css , 也可以后期通过 registerCssFile 引入 public $css = [ // bootstrap - css 'themes/css/bootstrap.css', // core - css 'themes/css/style.css', 'themes/css/doc.css', 'themes/blue/core.css', // plug - css 'plugins/kindeditor_4.1.10/themes/default/default.css', 'plugins/colorpicker/css/bootstrap-colorpicker.min.css', 'plugins/niceValidator/jquery.validator.css', 'plugins/bootstrapSelect/bootstrap-select.css', 'plugins/syntaxhighlighter-2.1.382/styles/shCore.css', 'plugins/syntaxhighlighter-2.1.382/styles/shThemeEclipse.css', // other 'themes/css/FA/css/font-awesome.min.css', 'plugins/uploadify/css/uploadify.css', ]; // 指定页面要引入的 js , 也可以后期通过 registerJsFile 引入 public $js = [ // jquery 'js/jquery-1.7.2.min.js', 'js/jquery.cookie.js', // BJUI.all 分模块压缩版 'js/bjui-all.js', // plugins // swfupload for uploadify && kindeditor 'plugins/swfupload/swfupload.js', // kindeditor 'plugins/kindeditor_4.1.10/kindeditor-all.min.js', 'plugins/kindeditor_4.1.10/lang/zh_CN.js', // colorpicker 'plugins/colorpicker/js/bootstrap-colorpicker.min.js', // ztree 'plugins/ztree/jquery.ztree.all-3.5.js', // nice validate 'plugins/niceValidator/jquery.validator.js', 'plugins/niceValidator/jquery.validator.themes.js', // bootstrap plugins 'plugins/bootstrap.min.js', 'plugins/bootstrapSelect/bootstrap-select.min.js', 'plugins/bootstrapSelect/defaults-zh_CN.min.js', // icheck 'plugins/icheck/icheck.min.js', // dragsort 'plugins/dragsort/jquery.dragsort-0.5.1.min.js', // HighCharts // 'plugins/highcharts/highcharts.js', // 'plugins/highcharts/highcharts-3d.js', // 'plugins/highcharts/themes/gray.js', // ECharts // 'plugins/echarts/echarts.js', // other plugins 'plugins/other/jquery.autosize.js', 'plugins/uploadify/scripts/jquery.uploadify.min.js', 'plugins/download/jquery.fileDownload.js', 'plugins/syntaxhighlighter-2.1.382/scripts/brush.js', ]; }
哦哦, 也就是说只要开启了crsf验证的话,就得在前台页面上有一个 类似这样的表单数据提交给后台,YII会进行匹配
<input type="hidden" value="dWl3LW1IbU0cHA14VHwufCQvTmk9flV1REREZQUwFDomMRpDCTEhYA==" name="_csrf">
能不能说下,Yii这个匹配的过程,
Yii::$app->request->csrfToken
这个值存储在哪里的,怎么匹配的?存储位置
protected function createCsrfCookie($token) { $options = $this->csrfCookie; $options['name'] = $this->csrfParam; $options['value'] = $token; return new Cookie($options); }
校验方法
public function validateCsrfToken($token = null) { $method = $this->getMethod(); // only validate CSRF token on non-"safe" methods http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.1.1 if (!$this->enableCsrfValidation || in_array($method, ['GET', 'HEAD', 'OPTIONS'], true)) { return true; } $trueToken = $this->loadCsrfToken(); if ($token !== null) { return $this->validateCsrfTokenInternal($token, $trueToken); } else { return $this->validateCsrfTokenInternal($this->getBodyParam($this->csrfParam), $trueToken) || $this->validateCsrfTokenInternal($this->getCsrfTokenFromHeader(), $trueToken); } }