文档章节

CodeIgniter框架学习

b
 belllee
发布于 2017/02/15 21:45
字数 1137
阅读 34
收藏 0

公司最近要做一个SCM系统。--供应链管理(Supply chain management,SCM)之前项目就想用PHP,但是没时间学习,这次正好既有时间,项目又简单,可以试试PHP了。

框架的选择:

初期只做简单的生产任务管理,只是需要一些表格展示,加上新手。所以选择的框架,简单易用即可。开始考虑的有Yii和CodeIgniter。分别下载到本地后试用了一下。最后选择了CI。考虑原因如下

1、相对来说CI使用更简单,解压缩后直接使用即可。

2、CI代码结构更清晰,加载数据和视图都很清晰。

3、url显示上Yii的模式不太习惯,还是CI的模式更传统清晰一点。

4、CI的方法不用默认加Action,感觉Yii默认前后缀太罗嗦了。

5、CI没有自带的CRDU工具,但是网上找到了grocery CRUD,比Yii的Gii更方便

安装:

CI下载后即可使用,简单配置一下配置文件(application/config/database.php)即可使用。主要是数据库信息。

grocery CRUD下载后解压缩,覆盖到CI根目录即可。

grocery CRUD的使用:

1、支持多语言,默认有中文,但是有些地方有错误,需要自己修改一下。\assets\grocery_crud\languages\chinese.php。可以在配置文件中指定protected $default_theme= 'datatables';    (\application\libraries\grocery_crud.php)

2、默认提供了两种模板datatables和flexigrid。可以在配置文件中指定。protected $language= 'chinese';

3、原始的grocery CRUD(1.3.3)不支持视图,简单排查了一下,发现代码自动给edit和delete生成url链接时会取表的主键,而视图则没有主键。此处发生异常application\libraries\grocery_crud.php  1438行。暂时规避办法:增加主键判断if($data->primary_key != null && $data->primary_key != false),不为false时再生成url。同时controller代码里屏蔽一下操作$this->grocery_crud->unset_operations();这样使用视图时就不能增删改了。实际使用视图也应该是不能增删改才对。

4、复杂的查询可以通过扩展grocery_CRUD_Model来实现。然后控制器里指定该model。参考:http://www.grocerycrud.com/documentation/options_functions/set_model

5、联查的时候比较爽,指定关系后,新建和修改时,关联的字段自动生成dropdown。参考http://www.grocerycrud.com/documentation/options_functions/set_relation

6、指定列里增加操作,可以使用add_action来自定义操作。http://www.grocerycrud.com/examples/add_action_example

7、界面录入中文一直失败,开始以为是代码有问题。最后发现是Mysql的表设置有问题。代码和mysql都设置成utf8.确认mysql保存中文支持后,就没有问题了。

8、application\libraries\grocery_crud.php  1429行 可以修改默认表格的显示行数。$data->default_per_page,

9、默认最大显示字符是20,可以在配置文件(application\config\grocery_crud.php )里修改$config['grocery_crud_character_limiter']= 200;

10、表格,新建,编辑的样式可以在(\assets\grocery_crud\themes\模板\views)view文件里修改。

11、表格中默认值的处理,可采用自定义显示的方式来实现。

$crud->callback_field('userid',array($this,'userid_callback')); 
function userid_callback()
{
	return '<input type="text" maxlength="50" value="12345678" name="userid" style="width:500px" readonly>';
}

12、列宽的设置,可以利用callback_field(add和edit)和callback_column(list)来指定

权限管理:

CI没有自带的权限管理模块,就找了一个权限管理组件tank_auth,参考:http://codeigniter.org.cn/forums/thread-9586-1-1.html  http://konyukhov.com/soft/tank_auth/

解压缩后复制到CI根目录。修改CI配置文件application\config\config\config.php.其中$config['encryption_key'](32位加密Key)和$config['sess_use_database']= TRUE;两个配置。然后访问登录页面index.php/auth/login就可以注册了。

邮件验证不需要和验证码太复杂暂时关闭了。application\config\config\tank_auth.php配置文件修改一下配置

$config['captcha_registration'] = FALSE;
$config['email_activation'] = FALSE;

到这里用户注册和登录都OK了。接下来就是如何使用用户权限了。参考资料:http://www.cnblogs.com/jiji262/archive/2012/06/15/2551066.html

登录成功后默认返回主页,当然你也可以切换到其他页面。在application\controllers\auth.php 71行,指定跳转的页面

如果需要对全县模块进行扩展,可以修改application\libraries\tank_auth.php。比如我们需要对账户进行分级管理。我就扩展了一个get_user_authority()方法。

日志:

CI提供了日志记录功能,但是默认的配置是关闭的,需要修改配置打开。application\config\config\config.php文件中的日志记录级别$config['log_threshold'] = 4;以及index.php文件中设置环境类型,来设置日志define('ENVIRONMENT', 'development');


© 著作权归作者所有

共有 人打赏支持
b
粉丝 0
博文 80
码字总数 14299
作品 0
浦东
程序员
私信 提问
CodeIgniter 3.0.1 RC 发布,PHP 的 MVC 框架

CodeIgniter 3.0.1 RC 发布,现已提供下载:https://github.com/bcit-ci/CodeIgniter/archive/3.0.1rc.zip。 CodeIgniter 是一个简单快速的PHP MVC 框架。EllisLab 的工作人员发布了 CodeIg...

oschina
2015/07/27
1K
13
CodeIgniter 3.0 RC 发布,PHP 的 MVC 框架

CodeIgniter 3.0 RC 发布,此版本现已提供下载(ZIP)。详细更新内容请看这里:https://github.com/bcit-ci/CodeIgniter/blob/develop/user_guide_src/source/changelog.rst。 前几天还发布了...

愤怒的小兔
2015/01/27
5.8K
58
CodeIgniter 2.2.6/3.0.3 发布,PHP 的 MVC 框架

CodeIgniter 2.2.6 发布,此版本是安全更新版本: Fixed an XSS attack vector in Security Library method xss_clean(). Changed Config Library method base_url() to fallback to ``$_SER......

oschina
2015/11/02
1K
9
PHP 框架 CodeIgniter 找到新家

当我们宣布要为 CodeIgniter 寻找一个新家的时候,我们从世界各地收到了大量的电子邮件,甚至持续到了今天。但,有一个简单问题:我们应该把框架托付给谁?事实证明,巨大的压力让我们的选择...

CodeIgniter中国
2014/10/09
6.8K
58
CodeIgniter 3.0 将会使用 MIT 许可证发布!

CodeIgniter 3.0 RC3 发布,此版本现已提供下载:https://github.com/bcit-ci/CodeIgniter/archive/3.0rc3.zip。 同时,CodeIgniter 宣布 CodeIgniter 3.0 将会使用 MIT 许可证发布! CodeIg......

oschina
2015/03/11
1K
10

没有更多内容

加载失败,请刷新页面

加载更多

js垃圾回收机制和引起内存泄漏的操作

JS的垃圾回收机制了解吗? Js具有自动垃圾回收机制。垃圾收集器会按照固定的时间间隔周期性的执行。 JS中最常见的垃圾回收方式是标记清除。 工作原理:是当变量进入环境时,将这个变量标记为“...

Jack088
昨天
17
0
大数据教程(10.1)倒排索引建立

前面博主介绍了sql中join功能的大数据实现,本节将继续为小伙伴们分享倒排索引的建立。 一、需求 在很多项目中,我们需要对我们的文档建立索引(如:论坛帖子);我们需要记录某个词在各个文...

em_aaron
昨天
27
0
"errcode": 41001, "errmsg": "access_token missing hint: [w.ILza05728877!]"

Postman获取微信小程序码的时候报错, errcode: 41001, errmsg: access_token missing hint 查看小程序开发api指南,原来access_token是直接当作parameter的(写在url之后),scene参数一定要...

两广总督bogang
昨天
31
0
MYSQL索引

索引的作用 索引类似书籍目录,查找数据,先查找目录,定位页码 性能影响 索引能大大减少查询数据时需要扫描的数据量,提高查询速度, 避免排序和使用临时表 将随机I/O变顺序I/O 降低写速度,占用磁...

关元
昨天
15
0
撬动世界的支点——《引爆点》读书笔记2900字优秀范文

撬动世界的支点——《引爆点》读书笔记2900字优秀范文: 作者:挽弓如月。因为加入火种协会的读书活动,最近我连续阅读了两本论述流行的大作,格拉德威尔的《引爆点》和乔纳伯杰的《疯传》。...

原创小博客
昨天
35
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部