基于yii2的内容管理框架 [ 2.0 版本 ]
yidashi
注册时间:2015-06-26
最后登录:2018-11-07
在线时长:86小时19分
最后登录:2018-11-07
在线时长:86小时19分
- 粉丝77
- 金钱10060
- 威望240
- 积分13320
热门源码
- 整合完 yii2-rbac+yii2-admin+adminlte 等库的基础开发后台源码
- 适合初学者学习的一款通用的管理后台
- 基于 Yii 2 + Bootstrap 3 搭建一套后台管理系统 CMF
- yii-goaop - 将 goaop 集成到 Yii,在 Yii 中优雅的面向切面编程
- yii-log-target - 监控系统异常且多渠道发送异常信息通知
- 店滴云1.3.0
- 面向对象的一小步:添加 ActiveRecord 的 Scope 功能
- Yii2 开源商城 FecShop
- 基于 Yii2 开发的多店铺商城系统,免费开源 + 适合二开
- leadshop - 基于 Yii2 开发的一款免费开源且支持商业使用的商城管理系统
共 68 条评论
前台留言那一块 去留言 编写好留言 点击 提交 就报这个错
[frontend][/index.php?r=suggest%2Fcreate]
Message
exception 'yii\base\ErrorException' with message 'Undefined offset: 0' in D:\phpStudy\WWW\yuan\yii2cmf\common\behaviors\CommentBehavior.php:99
Stack trace:
#0 D:\phpStudy\WWW\yuan\yii2cmf\vendor\yiisoft\yii2\db\BaseActiveRecord.php(139): yii\base\Object->get()
#1 D:\phpStudy\WWW\yuan\yii2cmf\vendor\yiisoft\yii2\db\BaseActiveRecord.php(285): yii\base\Component->get()
#2 D:\phpStudy\WWW\yuan\yii2cmf\vendor\yiisoft\yii2\base\Object.php(118): yii\db\BaseActiveRecord->get()
#3 D:\phpStudy\WWW\yuan\yii2cmf\vendor\yiisoft\yii2\base\Object.php(134): common\behaviors\CommentBehavior->getCommentEnabled()
#4 D:\phpStudy\WWW\yuan\yii2cmf\vendor\yiisoft\yii2\db\BaseActiveRecord.php(139): yii\base\Object->get()
#5 D:\phpStudy\WWW\yuan\yii2cmf\vendor\yiisoft\yii2\db\BaseActiveRecord.php(285): yii\base\Component->get()
#6 D:\phpStudy\WWW\yuan\yii2cmf\vendor\yiisoft\yii2\base\Model.php(263): yii\db\BaseActiveRecord->get()
#7 D:\phpStudy\WWW\yuan\yii2cmf\vendor\yiisoft\yii2\base\Model.php(358): yii\validators\Validator->validateAttributes()
#8 D:\phpStudy\WWW\yuan\yii2cmf\vendor\yiisoft\yii2\db\ActiveRecord.php(455): yii\base\Model->validate()
#9 D:\phpStudy\WWW\yuan\yii2cmf\vendor\yiisoft\yii2\db\BaseActiveRecord.php(643): yii\db\ActiveRecord->insert()
#10 D:\phpStudy\WWW\yuan\yii2cmf\frontend\controllers\SuggestController.php(45): yii\db\BaseActiveRecord->save()
#11 D:\phpStudy\WWW\yuan\yii2cmf\vendor\yiisoft\yii2\base\InlineAction.php(57): frontend\controllers\SuggestController->actionCreate()
#12 D:\phpStudy\WWW\yuan\yii2cmf\vendor\yiisoft\yii2\base\InlineAction.php(57): ::call_user_func_array:{D:\phpStudy\WWW\yuan\yii2cmf\vendor\yiisoft\yii2\base\InlineAction.php:57}()
#13 D:\phpStudy\WWW\yuan\yii2cmf\vendor\yiisoft\yii2\base\Controller.php(156): yii\base\InlineAction->runWithParams()
#14 D:\phpStudy\WWW\yuan\yii2cmf\vendor\yiisoft\yii2\base\Module.php(523): yii\base\Controller->runAction()
#15 D:\phpStudy\WWW\yuan\yii2cmf\vendor\yiisoft\yii2\web\Application.php(102): yii\base\Module->runAction()
#16 D:\phpStudy\WWW\yuan\yii2cmf\vendor\yiisoft\yii2\base\Application.php(380): yii\web\Application->handleRequest()
#17 D:\phpStudy\WWW\yuan\yii2cmf\web\index.php(22): yii\base\Application->run()
#18 {main}
嗯。不错。赞
终于弄出来了,搞了一天半!在这里列一下安装时的坑,首先声明一下我是yii小白,本身对yii这框架理解的还不透彻,所以也是写给小白的。
一、新代码的结构说明
yii默认的是backend和frontend,安装完后,这俩文件夹下都有web/index.php。易大师现在是统一入口在根据录的web下。目录结构说明中也有这一点,当时就没看,所以一直在localhost下找对应的frontend/web 和backend/web. 所以大家也不要纠结这俩目录下有没有web目录了,现在入口就一个根目录下的web,web里面又分了admin和api。所以对应的前后台是:
前台: web/
后台: web/admin
接口: web/api
二、正确的安装姿势
我先是从yiichian上看的,然后又去git看的,可能时间太久远了吧,安装步骤跟代码都对应不上了,yiichina那些评论里说的问题也对应不上现在的代码结构了。在这里说一下安装步骤与坑。
1、git下载代码,composer install 安装依赖包。
2、我用的是xampp,mac平台,修改apache的配置文件:/Applications/XAMPP/xamppfiles/apache2/conf/httpd.conf 如果你是其他的windows或者linux,修改对应文件即可:添加如如下代码:
<VirtualHost *:80> ServerName www.testyii.com DocumentRoot "/Applications/XAMPP/xamppfiles/htdocs/yii2cmf-master/web/" </VirtualHost> <VirtualHost *:80> ServerName admin.testyii.com DocumentRoot "/Applications/XAMPP/xamppfiles/htdocs/yii2cmf-master/web/admin/" </VirtualHost>
这样就把前后台映射好了,对了还要修改本地hosts文件,我的是修改/etc/hosts 添加映射:
127.0.0.1 www.testyii.com 127.0.0.1 admin.testyii.com
这里给大家推荐mac上修改host的一个软件 SwitchHosts!
配置完映射之后,打开浏览器访问:www.testyii.com ,不出意外的话会出现安装界面,然后一步步的来,这时候有几个坑:
1)在输入db信息时,如果mysql中没有对应的数据库会提示不存在,所以需要先在mysql中创建数据库.(难道这个地方不是自动给安装的么?)
2)完了之后接着是床架admin用户信息,填完对应的用户信息之后,会出现loading界面,不出意外的话就跳到最后一步,设置要安装的模块,完成之后就可以显示登录界面了,输入刚才添加的用户信息就可以进入到后台界面了,哈哈,这是顺利的情况下,我想很多人应该跟我一样,卡在了loading这里,一直在转圈圈,于是我用断电调试,发现卡在了几个地方,因为没有做容错导致错误信息没有抛出来。出错是因为在设置缓存时由于权限问题,导致写缓存失败,随后在用到缓存的时候,取不出来,作者把缓存文件放在了根目录cache文件下,在执行composer install时,发现打印信息如下
> php -r "file_exists('.env') || copy('.env.example', '.env');@chmod('.env', 0766);" > yii\composer\Installer::postCreateProject chmod('cache', 0776)...done. chmod('web/assets', 0776)...done. chmod('web/storage', 0776)...done. chmod('web/admin/assets', 0776)...done. chmod('api/runtime', 0776)...done. chmod('backend/runtime', 0776)...done. chmod('frontend/runtime', 0776)...done. chmod('web/api/assets', 0776)...done.
在mac下这0776的权限不够,我自己又"chmod -R 777 cache",然后写缓存就可以成功了,同样的其他的几个地方也设置成了777就可以读写了。
由于写cache缓存失败,代码没有做容错处理的这几个地方是:
public function installConfig() { \Yii::$app->setKeys($this->envPath); //如果取缓存失败,这个$data会是false,下面的for循环就会抛异常,但是没有抛信息,所以一直loading。 $data = \Yii::$app->getCache()->get(SiteForm::CACHE_KEY); foreach ($data as $name => $value) { Yii::$app->setEnv($name, $value); } return true; } public function createAdminUser() { //如果取缓存失败,这个$data会是false,再把$data当数组用时就会报错,所以一直loading。 $data = \Yii::$app->getCache()->get(AdminForm::CACHE_KEY); $user = new User(); $user->setScenario("create"); $user->email = $data["email"]; $user->username = $data["username"]; $user->password = $data["password"]; if($user->create() == false) { return current($user->getFirstErrors()); } return null; }
三、未解决的问题
1、当成功安装以后,添加文章,在前台访问时报错:Class 'common\widgets\editormd\Editormd' not found。这个还没解决。
2、希望大湿多多完善代码吧,让我们这些小白,可以直接上手就用了。
辛苦,感谢。。你提到的问题都已经解决了
居然这么久了
composer install 安装报错啊
bawei的易大师?
楼主,后台界面是你自己写的哇
https://github.com/yidashi/adminlte2-tab-template
站长不让修改啊。。没法更新!!!!
易大师 后台系统设置 保存失败哦
后台发布文章 有内部服务器 错误 请教一下 什么原因
安装时竟然提醒需要PHP5.5
查看文章时提示错误:
PHP Compile Error – yii\base\ErrorException
Cannot declare class yii\helpers\Html, because the name is already in use
很不错啦,虽然英文注释有点压力啦
为什么进入后台管理系统菜单不显示
上传图片提示请选择文件是啥情况
php yii app 在windows下乱码
config表没有创建
exception 'PDOException' with message 'SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES)' i
> create table {{%notify_category}} ... done (time: 0.390s) > insert into {{%notify_category}} ... done (time: 0.047s) *** applied m160622_073825_create_notify (time: 0.889s) *** applying m160702_101410_create_plugins > create table {{%module}} ... done (time: 0.296s) > add primary key id on {{%module}} (id) ... done (time: 0.062s) > insert into {{%module}} ... done (time: 0.000s) > insert into {{%module}} ...Exception 'yii\db\Exception' with message 'SQLS TATE[HY000]: General error: 1364 Field 'bootstrap' doesn't have a default value The SQL being executed was: INSERT INTO `yii2cmf_module` (`id`, `name`, `class`, `status`, `type`, `created_at`, `updated_at`) VALUES ('message', '站内信模块', 'comm on\\modules\\message\\Module', 1, 1, 1472004918, 1472004918)' in D:\myWorkSoft\content\www\demo\vendor\yiisoft\yii2\db\Schema.php:633 Error Info: Array ( [0] => HY000 [1] => 1364 [2] => Field 'bootstrap' doesn't have a default value ) Stack trace: #0 D:\myWorkSoft\content\www\demo\vendor\yiisoft\yii2\db\Command.php(854): yii\d b\Schema->convertException(Object(PDOException), 'INSERT INTO `yi...') #1 D:\myWorkSoft\content\www\demo\vendor\yiisoft\yii2\db\Migration.php(189): yii \db\Command->execute() #2 D:\myWorkSoft\content\www\demo\database\migrations\m160702_101410_create_plug ins.php(45): yii\db\Migration->insert('{{%module}}', Array) #3 D:\myWorkSoft\content\www\demo\vendor\yiisoft\yii2\console\controllers\BaseMi grateController.php(509): m160702_101410_create_plugins->up() #4 D:\myWorkSoft\content\www\demo\vendor\yiisoft\yii2\console\controllers\BaseMi grateController.php(130): yii\console\controllers\BaseMigrateController->migrate Up('m160702_101410_...') #5 [internal function]: yii\console\controllers\BaseMigrateController->actionUp( 0)
楼主你好,我这边执行 PHP yii app时报错,您知道是什么原因吗
=============================================================================
An Error occurred while handling another error: exception 'PDOException' with message 'SQLSTATE[42S02]: Base table or view not found: 1146 Table 'yii.yii2cmf_config' doesn't exist' in D:\myWorkSoft\content\www\demo\vendor\yiisoft\yii2\db\Command.php:900 Stack trace: #0 D:\myWorkSoft\content\www\demo\vendor\yiisoft\yii2\db\Command.php(900): PDOStatement->execute() #1 D:\myWorkSoft\content\www\demo\vendor\yiisoft\yii2\db\Command.php(362): yii\db\Command->queryInternal('fetchAll', NULL) #2 D:\myWorkSoft\content\www\demo\vendor\yiisoft\yii2\db\Query.php(210): yii\db\Command->queryAll() #3 D:\myWorkSoft\content\www\demo\vendor\yiisoft\yii2\db\ActiveQuery.php(133): yii\db\Query->all(NULL) #4 D:\myWorkSoft\content\www\demo\common\components\Config.php(35): yii\db\ActiveQuery->all() #5 D:\myWorkSoft\content\www\demo\frontend\config\main.php(59): common\components\Config->get('SITE_NAME') #6 [internal function]: {closure}(Object(yii\base\Event)) #7 D:\myWorkSoft\content\www\demo\vendor\yiisoft\yii2\base\Component.php(541): call_user_func(Object(Closure), Object(yii\base\Event)) #8 D:\myWorkSoft\content\www\demo\vendor\yiisoft\yii2\base\View.php(486): yii\base\Component->trigger('beginPage') #9 D:\myWorkSoft\content\www\demo\vendor\yiisoft\yii2\views\errorHandler\exception.php(6): yii\base\View->beginPage() #10 D:\myWorkSoft\content\www\demo\vendor\yiisoft\yii2\base\View.php(325): require('D:\\myWorkSoft\\c...') #11 D:\myWorkSoft\content\www\demo\vendor\yiisoft\yii2\base\View.php(247): yii\base\View->renderPhpFile('D:\\myWorkSoft\\c...', Array) #12 D:\myWorkSoft\content\www\demo\vendor\yiisoft\yii2\web\ErrorHandler.php(241): yii\base\View->renderFile('@yii/views/erro...', Array, Object(yii\web\ErrorHandler)) #13 D:\myWorkSoft\content\www\demo\vendor\yiisoft\yii2\web\ErrorHandler.php(112): yii\web\ErrorHandler->renderFile('@yii/views/erro...', Array) #14 D:\myWorkSoft\content\www\demo\vendor\yiisoft\yii2\base\ErrorHandler.php(109): yii\web\ErrorHandler->renderException(Object(yii\db\Exception)) #15 [internal function]: yii\base\ErrorHandler->handleException(Object(yii\db\Exception))
然后执行的时候,就报这种错误了
提示:
SQLSTATE[42S02]: Base table or view not found: 1146 La table 'jd_data.pop_meta' n'existe pas The SQL being executed was: SELECT * FROM `pop_meta` WHERE (`type`='article') AND (0=1)
是不是缺个表 pop_meta,大师给指点下