注:上圖中demos、framework、requirements是Yii壓縮包中的文件夾,其它文件和文件夾是本人使用Eclipse時創建的。此外,在D:/wwwroot/YiiDemo/framework文件夾下有一個yiic.bat文件,這個文件可以幫助我們快速生成網站架構和MVC相關的文件。
另外,在本實例中MySQL和PHP都是用了utf8編碼,不建議使用gb2312編碼,能顯示的中文字符太少,並且對其它東亞語系不支持,甚至連生僻點的繁體中文都不能顯示,而utf8可以解決這個問題。
創建網站初始結構
啟動Windows命令行程序(在開始菜單上找到“運行”,然後輸入“cmd”並回車),可以看到如下命令行窗口:
在命令行方式下切換到Yii的framework目錄下用以執行yiic命令(實際執行的是yiic.bat),如下:
看到如上圖所示的信息之後,就可以使用yiic來創建網站結構了,在本例中我們在D:/wwwroot/YiiDemo/framework(注意Apache中網站根路徑為D:/wwwroot)下創建網站,網站名字為study,先在D:/wwwroot/YiiDemo/framework下手動創建study這個文件夾,然後使用如下命令創建網站:yiic webapp 網站路徑,如下圖:
在輸入創建網站的命令之後就會看到如上圖所示的提示,鍵入”y”之後就會在D:/wwwroot/YiiDemo/study目錄創建網站的框架結構,如下圖所示:
按照本人機器配置,現在就可以看到Yii框架的雛形顯示了,網址是:http://localhost/YiiDemo/study/index.php。
生成MVC文件
按照默認配置還不能使用數據庫,要想獲取與數據庫的練習,需要更改配置,打開D:/wwwroot/YiiDemo/study/protected/config文件夾下的main.php文件,更改components中的配置即可,'db'這一參數被注釋掉了,將'db'參數設置如下:
復制代碼 代碼如下:
'db'=>array(
'connectionString'=>'mysql:host=localhost;dbname=study',
'username'=>'root',
'password'=>'jeri',
),
保存之後即可連接MySQL數據庫了,實際使用時要根據自己的實際情況配置。
在此將繼續使用yiic這個命令行工具,通過cd切換工作路徑到D:/wwwroot/YiiDemo/study這個文件夾,然後在命令行中可以創建model和view文件。如下:
需要注意的是,如上圖所示,因為yiic.bat文件在D:/wwwroot/YiiDemo/framework文件夾下,而當前命令行的工作路徑是D:/wwwroot/YiiDemo/study,所以在運行yiic時建議使用全路徑。
使用yiic shell命令就可以進入shell命令行,在命令行看到的輸入提示變為“>>”,鍵入model 表名就會創建對應表的model文件,上圖下面就是使用“model user”成功之後就可以看到上圖對應的情況。
還可以使用crud (crud分別是create/read/update/delete的縮寫,表示常用的增刪改查數據庫操作)表名創建對應的coltroller和view文件,如下圖所示:
比如針對表user、userlist等使用model和crud命令之後,我們就可以在浏覽器中查看這些文件了,如查看userlist表中的數據,可以在浏覽器中輸入http://localhost/YiiDemo/study/index.php?r=userlist,看到如下所示的圖:
可以看到盡管MySQL和PHP都是用了utf8編碼,但是數據庫中的RealName字段因為是中文數據導致不能正常顯示,出現這種情況是因為采用了默認的字符集連接MySQL,在PHP中直接連接MySQL時,如果使用了utf8編碼,我們會在PHP代碼中做如下設置:mysql_query("set names 'utf8'");但是在Yii中沒有提供這樣的機會,
我們可以在設置數據庫連接字符串時指定連接數據庫所使用的字符集,如下:
復制代碼 代碼如下:
'db'=>array(
'connectionString'=>'mysql:host=localhost;dbname=study',
'username'=>'root',
'password'=>'jeri',
'charset'=>'utf8',//use charset as utf8
),
這樣就能正常顯示了。當然也可以更改全局配置,那就是更改D:/wwwroot/YiiDemo/framework/db文件夾下的CDbConnection.php文件中的
public $charset;
改為public $charset='utf8';也能正常顯示了,如下圖所示:
好了,至此沒有寫一行代碼,但是已經完成了一個網站的大體框架,並且能初步實現增刪改查功能了。雖然采用更改全部配置的方式也可以實現顯示數據庫中的中文,但是不建議采用這種方式。在此非常感謝kingheaven的提示。