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;
- }
- }