1. CI中的controller都应当小写。刚开始为了区分单词,把第二个单词大写了,结果就是不认default_controller。事实证明这是错误的。放到linux下面就不灵了,应该全部小写,如果你大写了,CI会认为这是libraries里面的东西。不管怎样都应该全部小写,至少可以避免linux下区分大小写的问题。
2. 分页的问题。CI的官方论坛下提供了一些源代码,怎样写分页函数我就不多说了,可以直接看高手的。关键是传递页面参数的时候,不要忘了修改segment。一开始怎么传都不对,后来才想起来我的网址已经是localhost/codeigniter/aaa/bbb/3/10了,这样segment也要相应改变。分页参数在第几个/后,他就是uri->segment(几)。如果是搜索之后的分页,那么$config['total_rows']就不是count_all了,而是加入where之后的query的记录数。想起来倒是有一个问题还没解决,就是在你点search之后,一般需要用JS把网址转换成CI固有的模式,但是怎样使这个js生成的网址包含到site_url中,我没有解决,只能手工了(仔细想想还是挺简单的呵呵,自己造网址不用site_url)。
3. MVC模式我已经比较适应了。将页面都放在view中,控制语句放在controller中,而函数放在model中。刚开始有很多人和我一样想要在view或者control中加一些语句,只能说,不行,也不规范。最好的办法是写成helper,如果是数据库的二次调用的话,可以用inner join合并。
4. htaccess的问题。很多人肯定和我一样,一开始接触的时候就是感兴趣怎样可以去掉index.php。虽然网上已经泛滥了,但是我再写一次吧。其实就两个工作,第一,在根目录写一个.htaccess的文档,第二,开启apache中的rewrite模块。
1)htaccess的写法很多。这是基于你对CI各层目录的安排决定的。我的安排:除了application中的内容外。将其他所有东西放在根目录下的www目录下,其中图片放在www/images/下,flash放在www/flash/下,xml放在www/xml下,js放在www/js下。。。。总之全堆在www里面。所有views在title下面加上<base href="<?=base_url()?>" />这句话,系统就能识别你的根目录了,所有链接改成site_url()就可以保证路径不会出错了。于是,我的htaccess是这样的:
RewriteEngine on
RewriteCond $1 !^(index\.php|www|uploadfiles|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L] [L]
第一行是将rewrite打开,第二行是不rewrite的例外,包括index.php本身,www目录,uploadfiles(这个参见5),还有robots搜索,第三行自然就是将index.php隐藏的rewrite规则了,即剩下的网址由于原来都是localhost/codeigniter/index.php/aaa/bbb的模式,现在可以去掉index.php了。而www下的网址不涉及index.php,用不到这个规则,所以要排除。
2)首先找到apache下面的http.conf,路径是apache的conf目录下。找到这一行:LoadModule rewrite_module modules/mod_rewrite.so,将前面的#去掉,也就是说开启这个module。另外需要找到rewrite的目录行,将AllowOverride设置为All,其实就是roadmodule下面的那个directory.
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#
AllowOverride All
3)在CI的config目录下的config.php中,将$config['index_page'] = "index.php"改为$config['index_page'] = “”,这样就大功告成啦!!不用输入index.php也可以访问了。其实更关键的是你的各个目录的路径安排。
5.FCKEditor的问题。应该说我在应用的时候没有遇到任何麻烦,除了上传时候的路径让我一顿好找。我觉得设置成根目录下的/uploadfiles是不错的选择,当然别忘了在htaccess中把uploadfiles也放在不rewrite的队伍中。因为我现在的习惯是所有的文件编码都设置成utf-8,所以网上经常说的乱码的现象没有遇到。
基本上就是这些基本的问题了,我做的其实就是简单的企业网站,没有高级应用,所以也没有遇到更复杂的问题。等考完GT可以尝试做一个更复杂的网站,和AJAX结合后再写一些心得。下次要再做这样的CMS,后台直接搞定,省了不少时间。而且对于我这样的PHP烂人来说,CI帮我解决了很多安全问题,同时也提高了效率。
有点过度兴奋了,写得超级乱,我自己都不愿意回过头去细细检查了,具体问题可以再联系我,只要我能解答。最后上传一个验证码的helper吧,版权归CI论坛上的同学所有,我只是转一下,顺便写一下用法。。。
点击下载此文件
1)首先在controller中引用getcode_helper.php, $this->load->helper('getcode');
建立一个function比如
- function createcode()
- {
- code();
- }
2)验证码图片链接地址:<img id="codeimage" src="<?=site_url('controller路径/createcode')?>
3)表单提交时验证函数:
- function seccode_check($str)
- {
- if(chk_code($str))
- {
- return TRUE;
- }
- else
- {
- return FALSE;
- }
- }