文档章节

CodeIgniter框架学习

b
 belllee
发布于 2017/02/15 21:45
字数 1137
阅读 29
收藏 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
求教各位PHP大佬有关Codeigniter和Thinkphp的项目开发差异

背景: codeigniter现阶段版本为:3.1.9, 前些天刚刚发布了4.0 alpha1版本,早期用过2.2版本。 Thinkphp现阶段版本为:5.0.21,且一直在使用中,从1.5开始就一直在用。 近期由于有一个新项目...

我勒个屮艸芔茻
10/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

一个可能的NEO链上安全随机数解决方案

0x00 困境 链上安全随机数生成应该算是一个比较蛋疼的问题,哪怕你的系统再牛逼,合约程序困在小小的虚拟机里,哪怕天大的本事也施展不开。 更悲催的是,交易执行的时候,是在每一个节点都执...

暖冰
今天
1
0
【大福利】极客时间专栏返现二维码大汇总

我已经购买了如下专栏,大家通过我的二维码你可以获得一定额度的返现! 然后,再给大家来个福利,只要你通过我的二维码购买,并且关注了【飞鱼说编程】公众号,可以加我微信或者私聊我,我再...

飞鱼说编程
今天
1
0
Spring5对比Spring3.2源码之容器的基本实现

最近看了《Spring源码深度解析》,该书是基于Spring3.2版本的,其中关于第二章容器的基本实现部分,目前spring5的实现方式已有较大改变。 Spring3.2的实现: public void testSimpleLoad(){...

Ilike_Java
今天
1
0
【王阳明心学语录】-001

1.“破山中贼易,破心中贼难。” 2.“夫万事万物之理不外于吾心。” 3.“心即理也。”“心外无理,心外无物,心外无事。” 4.“人心之得其正者即道心;道心之失其正者即人心。” 5.“无...

卯金刀GG
今天
2
0
OSChina 周三乱弹 —— 我们无法成为野兽

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @ _刚刚好: 霸王洗发水这波很骚 手机党少年们想听歌,请使劲儿戳(这里) hahahahahahh @嘻酱:居然忘了喝水。 让你喝可乐的话, 你准忘不了...

小小编辑
今天
14
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部