2015-12-13 / JSN / 0 Comments / 662 次瀏覽
Codeigniter 本身有支援多國語言的切換。例如
|
$this->lang->load('讀取語言分類的檔案名稱', '語言'); echo $this->lang->line('辨識鍵'); |
這樣是不是有點難懂又麻煩?如果我要顯示『正體中文』底下『選單檔案』中的『Hello』為 『哈囉,你好!』,我們要這麼寫
|
$this->lang->load('menu', 'chinese_zh'); echo $this->lang->line('hello'); |
如果你想要直覺一點的話,想要這麼用
那就使用我擴充的涵式庫 Translg 啦!你就可以直接這麼使用
|
$translg = new Translg(); echo $Translg->chinese_zh->menu->hello; //顯示 哈囉,你好! echo $Translg->english->menu->hello; //顯示 Hello World |
目前可以透過套件管理器 Composer 下載,也可以直接去 Github 下載。其他教學方式也都放在 Github 喔!
2013-07-04 / JSN / 0 Comments / 477 次瀏覽
看官方文件,原本以為application/core/只能這麼使用
****application/core/MY_Controller.php****
|
; html-script: false ]class MY_Controller extends CI_Controller { function __construct() { parent::__construct(); } } |
可是很多時候我們需要多做點分離的動作
任何地方:session開啟
前端:過濾XSS攻擊
後端:不過濾POST、GET的XSS或是認證使用者是否登入
這時候通通都實做在MY_Controller 未免太雜亂。
所以實驗了一下其實有另外一種寫法,是codeigniter 上面沒提到的。
============================================================================
****application/core/MY_Controller.php****
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
|
; html-script: false ]<? /* * 雖然文件名稱為MY_Controller.php,但是實際上裡面所寫的class名稱可以不必對應 MY_Controller * 但我們還是依照規定,把共用的class取名MY_Controller * * class 架構是這樣 * [MY_Controller] 共用 * --[MY_BE_Controller] 後端使用 * --[MY_FE_Controller] 前端使用 * * */ //共同使用的程序 class MY_Controller extends CI_Controller { function __construct() { parent::__construct(); //無論何處都要執行的請寫在這邊,例如開啟session echo "目前使用MY_Controller<br>"; } } class MY_BE_Controller extends MY_Controller { function __construct() { parent::__construct(); //僅供後端使用的程序,例如認證使用者登入狀態 echo "目前使用MY_BE_Controller<br>"; } } class MY_FE_Controller extends MY_Controller { function __construct() { parent::__construct(); //僅供前端使用的程序, 例如過濾POST、GET echo "目前使用MY_FE_Controller<br>"; } } ?> |
接著實驗看看:
(A)
****application/controllers/web.php****
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
; html-script: false ]class Web extends MY_BE_Controller { function __construct() { parent::__construct(); } public function index() { } } /* 會得到: 目前使用MY_Controller 目前使用MY_BE_Controller */ |
(B)
****application/controllers/web.php****
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
; html-script: false ]class Web extends MY_FE_Controller { function __construct() { parent::__construct(); } public function index() { } } /* 會得到: 目前使用MY_Controller 目前使用MY_FE_Controller */ |
這樣一來,前後端各自需要執行的整體程序,就不會通通擠在一起了!
2013-06-27 / JSN / 0 Comments / 36 次瀏覽
使用pagination class的時候
若沒有使用參數 $config[‘num_tag_open’] 與 $config[‘num_tag_close’]
會造成輸出的字串有空白( )字元佔位…..
導致分頁數字無法完美對齊。
如:
|
; html-script: false ]<div class="pagination_list"> <a href="http://">1</a> <span class="current">2</span> <a href="http://">3</a> <a href="http://">4</a> </div> |
所以指定num_tag_open與num_tag_close隨便的標籤即可解決。
|
; html-script: false ] /* 自訂分頁數字連結 */ $config['num_tag_open'] = '<span>'; $config['num_tag_close'] = '</span>'; |
2013-05-28 / JSN / 0 Comments / 996 次瀏覽
在config/database.php設定如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
; html-script: false ] $active_group = 'default'; $active_record = TRUE; $db['default']['hostname'] = 'mysql:host=localhost'; //如果使用dbdriver使用mysql或mysqli就填寫localhost即可。使用PDO寫法較不一樣。 $db['default']['username'] = '資料庫使用者名稱'; $db['default']['password'] = '資料庫使用者密碼'; $db['default']['database'] = '資料庫名稱'; $db['default']['dbdriver'] = 'pdo'; //使用PDO $db['default']['dbprefix'] = ''; $db['default']['pconnect'] = TRUE; $db['default']['db_debug'] = TRUE; $db['default']['cache_on'] = FALSE; $db['default']['cachedir'] = ''; $db['default']['char_set'] = 'utf8'; $db['default']['dbcollat'] = 'utf8_general_ci'; $db['default']['swap_pre'] = ''; $db['default']['autoinit'] = TRUE; $db['default']['stricton'] = FALSE; |
比較須要注意的就是
$db[‘default’][‘hostname’]
$db[‘default’][‘dbdriver’]
的地方~
2013-05-04 / JSN / 0 Comments / 551 次瀏覽
找出你程式碼連接資料庫(像我是連MySQL)的程式碼
若寫的是localhost,替換成127.0.0.1即可