分类 Yii2 下的文章

1.问题描述:
yii2中使用querylist的百度搜索插件,出现php报错curl_setopt_array(): Unable to create temporary file,

2.使用echo sys_get_temp_dir();获得系统临时文件位置:C:windows\

3.修改php.ini
打开本地的php 下的 php.ini 文件 ,找到 sys_temp_dir='./tmp' 的配置项,将前面的分号 ; 注释去掉
改为 E:phpStudytmptmp;重启phpstudy,问题解决了!

Yii2是一款非常优秀的php开发框架,足够出色,学习曲线并不是很高,适合高效率开发需求。本文仅以安装配置yii2高级版为例,记录说明使用composer安装配置yii2。
一、composer方式安装
php版本>=5.4
1.安装composer
下载Composer并安装.--环境变量设置
如果composer安装成功:
执行composer self-update命令更新Composer为最新版本,
然后进入你要安装yii的有效web目录(www目录下)

2.composer安装yii

基础版
composer create-project --prefer-dist yiisoft/yii2-app-basic yii
高级版
composer create-project --prefer-dist yiisoft/yii2-app-advanced yii
注: yii是在www下新建yii目录,可根据需要自定
关联点 :输入github账户的Token
登录github.com ---settings---Personal access tokens---

3.进入当前安装目录,初始化 执行 init

4.配置数据库 common/config/main-local.php
执行 yii migrate
创建user、migration表

5.url和汉化
去掉index.php
形式: web/controller/action/params
.htaccess
Options +FollowSymLinks
IndexIgnore /
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

otherwise forward it to index.php

RewriteRule . index.php
注:
上述htaccess要存放在frontend和backend的web下各一份,否则访问前台时候会跳到后台模块(根目录配置htaccess rewriterule. backend/web/index.php的情况下)
(这是为了隐藏 Index.php,apache必须要开启rewrite模块)

下面的urlManager配置在common/main.php

'components'=>[]中添加
'urlManager'=>[

        'enablePrettyUrl'=> true,
        'enableStrictParsing'=> false,//严格解析,要求当前请求至少匹配一个路由规则,否则判定为无效路由
        'showScriptName'=>false,//是否显示入口文件
        'suffix'=>'',//后缀自定义如.html
        'rules'=>[
            "<controller:\w+>/<id:\d+>"=>"<controller>/view",
            "<controller:\w+>/<action:\w+>/<id:\d+>"=>"<controller>/<action>",
            "<controller:\w+>/<action:\w+>"=>"<controller>/<action>"       
        ]
    ],

配置
'language'=>'zh-CN',
//'sourceLanguage'=>'zh-CN',
sourceLanguage 代表你的数据源语言标记
language 表示当前语言标记

6.admin、adminLTE
http://www.yiichina.com/tutorial/876
其中adminLTE生成权限数据表4张
cmd 到安装目录
安装adminLTE
composer require dmstr/yii2-adminlte-asset "2.*"
复制 vendor/dmstr/yii2-adminlte-asset/example-views/yiisoft/yii2-app 到 backend/views/,需要覆盖的则覆盖
注:可理解为adminLTE只是模板

安装admin
项目目录下执行
composer require mdmsoft/yii2-admin "2.x-dev"

配置 backend/config/main.php 文件
"modules" => [

"admin" => [
    "class" => "mdm\admin\Module",
],

],
"aliases" => [

"@mdm/admin" => "@vendor/mdmsoft/yii2-admin",

],
'as access' => [

'class' => 'mdm\admin\components\AccessControl',
'allowActions' => [
    //这里是允许访问的action
    //controller/action
// * 表示允许所有,后期会介绍这个
    '*'
]

],
'components' => [

"authManager" => [
    "class" => 'yii\rbac\DbManager',
    "defaultRoles" => ["guest"],
],

],

7、导入 rbac 表格
执行.sql 文件:vendor/yiisoft/yii2/rbac/migrations/schema-mysql.sql/ ?
cmd如何执行?
console配置组件中添加
'authManager'=>[

        'class'=>'yii\rbac\DbManager',
        'itemTable'=>'{{%auth_item}}',
        'itemChildTable'=>'{{%auth_item_child}}',
        'assignmentTable'=>'{{%auth_assignment}}',
        'ruleTable'=>'{{%auth_rule}}',
        'defaultRoles'=>['default'],
    ],

php yii migrate --migrationPath=@yii/rbac/migrations
生成四张表如下:

8、
前台注册用户
运行 127.0.0.1/advanced/backend/web/admin/route 预览效果

9、关于gii
MVC功能模块开发
数据库字典设计,sql语句,生成tables
gii生成
model、controller、view基础模板
修改MVC细节优化

模型、控制器方法添加
对应views修改

其他:
安装时间控件
composer require kartik-v/yii2-widget-datetimepicker "*"(优先)

composer require kartik-v/yii2-widget-timepicker "*"

补充:
地区选择插件
composer require chenkby/yii2-region "dev-master"

'options' => ['class' => 'form-horizontal'],

  'fieldConfig' => [
      'template' => "<div class='col-xs-3 col-sm-2 text-right'>{label}</div><div class='col-xs-9 col-sm-7'>{input}</div><div class='col-xs-12 col-xs-offset-3 col-sm-3 col-sm-offset-0'>{error}</div>",

Echarts插件
composer require --prefer-dist daixianceng/yii2-echarts "*"
composer require daixianceng/yii2-echarts "*"
--prefer-dist 为了强制使用压缩包,而不是克隆源代码。
composer require bower-asset/echarts "*"

ueditor
composer require kucha/ueditor "*"

至此,yii2高级版安装和初始设置完毕,开始你的yii2高效开发旅程!

behaviors英文原意为行为,从字面来看是应该关于控制器内部行为的相关规则设定。
贴上源代码如下:
public function behaviors()

{
    return [
        'access' => [
            'class' => AccessControl::className(),
            'rules' => [
                [
                    'actions' => ['login', 'error'],
                    'allow' => true,
                ],
                [
                    'actions' => ['logout', 'index'],
                    'allow' => true,
                    'roles' => ['@'],
                ],
            ],
        ],
        'verbs' => [
            'class' => VerbFilter::className(),
            'actions' => [
                'logout' => ['post'],
            ],
        ],
    ];
}

behaviors方法返回 配置access(权限)、verbs(动作/行为/方法)的数组,其中access使用的类是AccessControl(权限控制器),verbs使用的类是VerbFilter(动作/行为过滤器),两者都在yiifilters命名空间下,都属于过滤器。
其中,access通过rules配置定义了规则,actions指明了方法,allow是否允许(true:允许;false:禁止),roles限定角色(认证用户、未认证用户):联合起来意思即为是否允许(alllow)用户(roles)执行方法(actions)。
而verbs则是对方法请求类型(get、post……)的限定,如上logout方法采用post方式提交请求。
过滤器是 控制器 动作 执行之前或之后执行的对象。 例如访问控制过滤器可在动作执行之前来控制特殊终端用户是否有权限执行动作, 内容压缩过滤器可在动作执行之后发给终端用户之前压缩响应内容。

过滤器可包含 预过滤(过滤逻辑在动作之前) 或 后过滤(过滤逻辑在动作之后),也可同时包含两者。

yiifiltersVerbFilter

VerbFilter检查请求动作的HTTP请求方式是否允许执行,如果不允许,会抛出HTTP 405异常。 如下示例,VerbFilter指定CRUD动作所允许的请求方式。

use yiifiltersVerbFilter;

public function behaviors()
{

return [
    'verbs' => [
        'class' => VerbFilter::className(),
        'actions' => [
            'index'  => ['get'],
            'view'   => ['get'],
            'create' => ['get', 'post'],
            'update' => ['get', 'put', 'post'],
            'delete' => ['post', 'delete'],
        ],
    ],
];

}