37389 2016-06-28 20:02:07 6407次浏览 3条评论 9 0 1

从零起用YII制作电子商务网站
演示:http://shop.onephp.com.cn
前后台管理员:test,111111
前言
我用YII做网站,最主要的原因就是自己“懒”。用PHP做过几年的网站开发,每当写点新东西时,都觉
得挺累的,做一些稍大的开发时,总感觉力不从心。一个偶然的机会,接触了YII框架,经过看手册,感
觉挺深奥的,心里就在想,到底要不要学下去?到底值不值得学?会不会最终半途而废呢?最终还是坚
定了信念。YII很多东西都是现成的,拿过来配置一下直接可以用,何乐不为呢?

这个教程主要是实现一个购物网站的基本功能,属于入门级的资料,但有些地方讲的不是很细,所以,事先要对YII做一些认识,推荐看一下爱慕网上的YIi视频,及对 yiichina上的中文文档先了解一遍。

主要配置实现了RBAC,购物车功能,会员中心,前后台分离,邮件发送,URL管理等功能.
本教程是做完程序之后写出来的,如果有写错或写漏的地方,请多包涵。

1.安装Composer

安装方法介绍:https://getcomposer.org/download/

我采用的是手动安装 直接下载 composer.phar放在项目根目录shop下

CD到shop下

php composer.phar global require "fxp/composer-asset-plugin:~1.0.0"
注:如果composer下载的是可执行文件,上面的 php composer.phar 改为composer
2.安装Yii2高级模板:

php composer.phar create-project yiisoft/yii2-app-advanced advanced 2.0.8

数据配置
位置:

common\config\main-local.php
        'db' => [
            'class' => 'yii\db\Connection',
            'dsn' => 'mysql:host=localhost;dbname=shop',
            'username' => 'root',
            'password' => 'root',
            'charset' => 'utf8',
        ],

双击advanced目录下面的init.bat文件即可 根据得示进行配置
打开下面文件,可以直接在phpmyadmin里导进去, 用RBAC
vendor\mdmsoft\yii2-admin\migrations\schema-mysql.sql

注:在配置的不同阶段,都可以打开 127.0.0.1/shop/backend/web 查看效果,如有问题,请及时处理
,再住下做

3.但上面的方法是直接连接到国外网站,速度会比较慢,所以,先进行镜像安装。

镜像安装方法:http://pkg.phpcomposer.com/

我这里进行了系统全局配置

php composer.phar config -g repo.packagist composer https://packagist.phpcomposer.com

(注:composer更新命令是 composer selfupdate)

4.安装AdminLTE https://github.com/dmstr/yii2-adminlte-asset
4.1
cd到shop下,执行命令

php composer.phar require dmstr/yii2-adminlte-asset "2.*"

(注:安装过程,如果中断,可多试几次,如果出错,可根据错误提示,进行故障排除)
4.2
vendor/dmstr/yii2-adminlte-asset/example-views/yiisoft/yii2-app目录下的layouts和site复制
到backend/views下的lauouts和site,有同名的覆盖掉

5.安装 https://github.com/mdmsoft/yii2-admin
5.1
方法:cd到shop下

php composer.phar require mdmsoft/yii2-admin "~2.0"

找到backend/config/main.php

"modules" => [    
    "admin" => [        
        "class" => "mdm\admin\Module",   
    ],
],
"aliases" => [    
    "@mdm/admin" => "@vendor/mdmsoft/yii2-admin",
],

"components" => [   
   
    "authManager" => [        
        "class" => 'yii\rbac\DbManager', //这里记得用单引号而不是双引号        
        "defaultRoles" => ["guest"],    
    ],   
     ...
],
'as access' => [
    'class' => 'mdm\admin\components\AccessControl',
    'allowActions' => [
	'*' //不做限制的访问,在测试阶段很有用
    ]
],

打开文件
vendor/yiisoft/yii2/rbac/migrations/schema-mysql.sql 文件
导入数据库
5.2
打开文件 backend\view\layouts\left.php添加菜单

<?php
echo dmstr\widgets\Menu::widget( [
     'options' => ['class' => 'sidebar-menu'], 
    'items' => MenuHelper::getAssignedMenu(Yii::$app->user->id), 
] );
?>

至此,大家就可以自个儿琢磨添加菜单,配置权限
5.3
根据菜单表及对应的相关文件,可以复制出订单列表,商品分类,商品列表等功能,然后再根据实现情况,进行字段的增删及文件的修改。
根据USER及对应的文件,可以复制出会员管理表及文件
5.4 设置为中文语言
对应中文翻译文件
shop\vendor\mdmsoft\yii2-admin\messages\zh-CN
配置文件
Common\config\main.php

'name'=>'OnePHP1.0', //定义名称
'language' => 'zh-CN', //定义语言

至此,后台部分就差不多了。

下面看一下前台部分。
1.1
Cd到shop目录 下载购物车模块

php composer.phar require --prefer-dist omnilight/yii2-shopping-cart "*"

1.2
同时另建一个项目 下载购物车系统
https://github.com/samdark/yii2-shop

git clone https://github.com/samdark/yii2-shop.git
composer self-update
composer global require "fxp/composer-asset-plugin:~1.1.1"
cd yii2-shop
composer install

这个本来是一个完整的购物车系统(基于omnilight),我们只用部分文件就可以了
把这个项目下的catalog,cart部分复制到我们的shop项目对应位置。

这样的话,很轻松的前台部分我们就做出来了。下面进行一些其它工作即可。

1.3前后台用户登陆分开

后台部分

'components' => [
        'user' => [
            'identityClass' => 'common\models\User',
            'enableAutoLogin' => true,
            'identityCookie' => [
                'name' => '_backendUser',             ],
       ],
]

前台

'components' => [
        'user' => [
            'identityClass' => 'common\models\Member',
            'enableAutoLogin' => true,
            'identityCookie' => [
                'name' => '_frontendUser', // unique for frontend
            ],
            'idParam' => '__member'
        ],
]

Common\models\User.php 复制一份为 Member.php 并改动表名

1.4邮箱配置

Common\config\main-local.php
    'components' => [
        'mailer' => [  
            'class' => 'yii\swiftmailer\Mailer',  
            'useFileTransport' =>false,//这句一定有,false发送邮件,true只是生成邮件在runtime文件夹下,不发邮件
            'transport' => [  
               'class' => 'Swift_SmtpTransport',  
               'host' => 'mail.onephp.com.cn',  //每种邮箱的host配置不一样
               'username' => 'support@onephp.com.cn',  
               'password' => ******,  
               'port' => '25',  
               //'encryption' => 'ssl',  
                                   
                           ],   
           'messageConfig'=>[  
               'charset'=>'UTF-8',  
               'from'=>['support@onephp.com.cn'=>'Support']  
               ],  
        ],  
] 

演示:http://shop.onephp.com.cn
前后台管理员:test,111111

  • 评论于 2016-06-29 08:32 举报

    这个帖子应该发到源码比较好,另外,你再好好编辑一下,尤其是代码部分。

    1 条回复
    评论于 2016-06-29 08:54 回复

    那你帮我转过去吧,网站和代码都会慢慢完善的。

  • 评论于 2016-06-30 16:46 举报

    无法在这里上传图片是怎么回事?

  • 评论于 2018-01-22 20:33 举报

    这个本来是一个完整的购物车系统(基于omnilight),我们只用部分文件就可以了
    把这个项目下的catalog,cart部分复制到我们的shop项目对应位置。

    catalog,cart部分在哪哦,找半天都没找到。

    1 条回复
    评论于 2018-01-22 20:35 回复

    呃呃呃,找到了views里面

您需要登录后才可以评论。登录 | 立即注册