CodeIgniter框架学习

来源:互联网 发布:怎么提升淘宝销量 编辑:程序博客网 时间:2024/05/16 11:11

公司最近要做一个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');


原创粉丝点击