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高效开发旅程!

phpstudy作为一款优秀的php环境搭建工具,新版的phpstudy支持自定义php版本(只支持php5.3.0以后的任意版本),此次开发过程中需要安装php7.2,研究了一下,顺便总结下phpstudy安装自定义版本php的操作流程,总结如下。

安装过程

  • 1.下载php压缩包,例如本人使用win10,下载对应windows版本php的zip压缩包(本人选择32位) php下载 ,选择 VC15 x86 Non Thread Safe (2018-Aug-16 02:38:16) 也就是nts版本的(支持apache+nginx,没有nts的php只有apache支持)php下载
  • 2.phpstudy下: phpstudy安装目录下的php文件夹下新建文件夹php-7.2.9-nts,将压缩包解压到该文件夹下
    注意:目录一定要保留版本号及nts 信息。没有nts的php只有apache支持。有nts的版本apache、nginx都支持。
  • 3.重启phpstudy(建议退出之后,再次运行,本人直接点击重启后查看不到新安装的php版本)
    选择php版本

安装php7.2.9
查看PHPinfo

php7.2.9安装完成,其他版本的php安装流程同上,可根据需求自行参考安装。

typecho骨子里支持markdown,如此神器,为何不用,好用必须多用。
markdown与typecho气质相投,同样特性简单,极简主义的精神发挥到极致,因而,typecho默认支持和使用markdown,并不难理解。
学习使用markdown也是相当简单,多加练习,几乎大多数人都可以实现短期内纯熟自如的运用。
笔者一直使用的有道云笔记也是支持markdown的,其他,简书平台也是很好的选择。
或者,MarkDownPad也是一款足够优秀的用来使用markdown写作的好工具,

目前推荐MarkDownPad2

MarkDownPad下载

安装后可能会出现
请输入图片描述

html 渲染错误的问题:

MarkdownPad 的 FAQ 文档中给出了解决该问题的办法,可以按照文档采用操作。
详见:http://markdownpad.com/faq.html 页面中搜索 This view has crashed

windows 10系统 需要下载 一个 awesomium_v1.6.6_sdk_win 这是一个 HTML UI ENGINE

下载地址 http://markdownpad.com/download/awesomium_v1.6.6_sdk_win.exe

亲测下载安装后渲染正常;

目标:使用一台虚拟主机搭建多个网站
前提:虚拟主机支持开启伪静态,而且可以绑定多个域名(一般虚拟主机都支持)
思路:通过自定义.htaccess,实现不同域名访问不同站点目录
操作流程如下:
1.域名解析与绑定,虚拟主机一般情况下使用cname解析,将要创建站点的域名做好cname解析
2.根目录(站点存放目录,根据虚拟主机具体情况,一般是类似www/web/home之类的)创建.htaccess文件,
本文仅以域名test1.com对应站点目录test1,test2.com对应站点目录test2,test3.com对应站点目录test3为例;
根目录下.htaccess文件代码如下:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

test1.com

RewriteCond %{HTTP_HOST} ^(www.)?test1.com$ [NC]
RewriteCond %{REQUEST_URI} !^/test1/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ test1/$1 [L,QSA]

没有输入文件名的默认到到首页

RewriteCond %{HTTP_HOST} ^(www.)?test1.com$ [NC]
RewriteRule ^(/)?$ test1/index.html

test2.com

RewriteCond %{HTTP_HOST} ^(www.)?test2.com$ [NC]
RewriteCond %{REQUEST_URI} !^/test2/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ test2/$1 [L,QSA]

没有输入文件名的默认到到首页

RewriteCond %{HTTP_HOST} ^(www.)?test2.com$ [NC]
RewriteRule ^(/)?$ test2/index.html

test3.com

RewriteCond %{HTTP_HOST} ^(www.)?test3.com$ [NC]
RewriteCond %{REQUEST_URI} !^/test3/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ test3/$1 [L,QSA]

没有输入文件名的默认到到首页

RewriteCond %{HTTP_HOST} ^(www.)?test3.com$ [NC]
RewriteRule ^(/)?$ test1/index.html

</IfModule>

3.站点目录下分别创建.htaccess文件,实现站点域名访问限制(例如:test1.com只能访问test1目录不能访问test2/test3目录)
.htaccess文件代码如下,textx仅作示范,对应目录下testx分别改为test1/test2/test3:

<IfModule mod_rewrite.c>

RewriteEngine On

RewriteBase /

只许绑定的域名访问

RewriteCond %{HTTP_HOST} !^(www.)?testx.com$ [NC]

RewriteRule (.*) testx/$1 [L,R=301]

</IfModule>

如上就是使用一台虚拟搭建多个网站的操作方法。

场景:虚拟主机根目录下安装了wordpress,同时根目录下创建了多个子目录,用于搭建其他站点,开启伪静态,.htaccess文件中定义了对应域名访问对应子目录,发现htaccess会自动还原如下:

# BEGIN WordPress

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

搜索类似问题,应该是点击wordpress固定链接以后.htaccess文件被自动还原
尝试在#END WordPress后面(另起一行),添加自定义的域名-目录访问规则:

<IfModule mod_rewrite.c>

RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

# 绑定www.test1.com 到 test1 目录

RewriteCond %{HTTP_HOST} ^www.test1.com$ [NC]
RewriteCond %{REQUEST_URI} !^/test1/
RewriteRule ^(.*)$ test1/$1?Rewrite [L,QSA]

# 绑定www.test2.com到 test2目录

RewriteCond %{HTTP_HOST} ^www.test2.com$ [NC]
RewriteCond %{REQUEST_URI} !^/test2/
RewriteRule ^(.*)$ test2/$1?Rewrite [L,QSA]

</IfModule>

经测试,暂时未出现问题,特此记录一下。
补充说明:一台虚拟主机搭建多个站点,实现多个域名访问对应虚拟主机跟目录下子目录站点,前提条件需要开启伪静态,PHP网站伪静态使用的是Apache的Rewrite模块。一般主要是通过具体定义好.htaccess文件来实现。