文档章节

CodeIgniter框架学习

b
 belllee
发布于 2017/02/15 21:45
字数 1137
阅读 27
收藏 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 + uploadify 在 IE 下会话丢失问题的解决方案

最近需要学习并用CodeIgniter框架对一个项目进行二次开发,由于之前一直都是使用Symfony做项目,所以再换到CodeIgniter项目上还是比较顺畅的。不过相比较之下,感觉CodeIgniter比Symfony要轻...

random123
2014/06/23
0
0
实战jQuery和PHP CodeIgniter表单验证

前言   在Web建站中,表单的合法性验证是十分重要的一个环节,其中包括客户端浏览器的Javascript的验证和服务端的验证。在本文中将指导读者使用jQuery中的validate验证框架实现浏览器端的验...

彼得
2014/03/08
0
0
CodeIgniter3.0项目推荐

权限系统 https://github.com/benedmunds/CodeIgniter-Ion-Auth 国际化 https://github.com/bcit-ci/codeigniter3-translations session存储库 https://github.com/cnsaturn/codeigniter-my......

果树啊
2015/03/13
0
1
CodeIgniter 框架分析

入口文件 入口文件主要完成下列工作: 1) 指定 CodeIgniter 框架所在目录; 2) 定义 APPPATH 常量,指示应用程序文件根目录; 3) 载入 codeigniter/CodeIgniter.php 文件,启动框架。 codeig...

那些年我们一起
2012/08/10
0
17
CodeIgniter框架代码解析-index.php

工作中一直用的codeigniter框架,但是很多核心的内容并不了解是怎么运行的。 最近工作进度不是很紧,准备花点时间把codeigniter好好的研究一下。 先上index.php文件: <?php//这个文件是入口...

ClownFish
2011/05/13
0
2

没有更多内容

加载失败,请刷新页面

加载更多

下一页

angular 解决其他电脑不能访问的问题。

ng serve --host 0.0.0.0 --disable-host-check

miaojiangmin
今天
1
0
优酷视频文件怎么转换格式

  以前在优酷上下载视频都只是在手机上观看,但随着科技的发展,对于视频的要求也逐渐增多,不再只是观看视频那么简单,在精彩的部分还会将其单独分割出来,然后进行视频剪辑,可以做出我们...

萤火的萤火
今天
0
0
数据结构:散列

在一个数据结构中查找key元素,用顺序查找、二分查找都需要经过一系列关键之比较才能查找到结果,平均查找长度与数据量有关,元素越多比较次数就越多。 如果根据元素的关键字就能知道元素的存...

京一
今天
0
0
Apache RocketMQ 正式开源分布式事务消息

近日,Apache RocketMQ 社区正式发布4.3版本。此次发布不仅包括提升性能,减少内存使用等原有特性增强,还修复了部分社区提出的若干问题,更重要的是该版本开源了社区最为关心的分布式事务消...

阿里云云栖社区
今天
30
0
使用JavaScript和MQTT开发物联网应用

如果说Java和C#哪个是最好的开发语言,无疑会挑起程序员之间的相互怒怼,那如果说JavaScript是动态性最好的语言,相信大家都不会有太大的争议。随着越来越多的硬件平台和开发板开始支持JavaS...

少年不搬砖老大徒伤悲
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部