⑴ 怎樣知道yii框架安裝配置成功
工具/原料
Yii
PhpStudy
方法/步驟
下載yii,打開yii官網,找到你要下載的內容
再安裝php環境,這里列出我用的PHPstudy.圖中介紹安裝
下載完的yii放在www文件夾下
4
打開\framework下面 yiic.bat運行這個文件創建的應用,或者 在www目錄下新建index.php 其內容:
<?php
// change the following paths if necessary
$yii=dirname(__FILE__).'/framework/yii.php';
$config=dirname(__FILE__).'/protected/config/main.php';
// remove the following line when in proction mode
// defined('YII_DEBUG') or define('YII_DEBUG',true);
require_once($yii);
Yii::createWebApplication($config)->run();
?>
載入框架
打開 :http://localhost/ 本地瀏覽就可以看到你安裝成功了
⑵ Yii 配置文件main.php 中加入'language'=>'zh_cn', 不起作用咋辦
是起作用的,你看下麵包屑導航中的Home是不是變成首頁了?
或者在任何一個action中:
echo Yii::t('app', 'Home');
還要在mian.php的配置加上
'components' => [
// ...
'i18n' => [
'translations' => [
'app*' => [
'class' => 'yii\i18n\PhpMessageSource',
//'basePath' => '@app/messages',
//'sourceLanguage' => 'en',
'fileMap' => [
'app' => 'app.php',
'app/error' => 'error.php',
],
],
],
],
],
這里是yii2的做法,具體的看下Yii Internationalization I18N 文檔,不說太多,文檔最實際
⑶ yii2 怎麼讀取配置文件路徑
參數一般存放在一個名為param的文件里(數組)
yii2裡面這樣讀取 Yii::$app->param['key']
yii1.x版本的也差不多 只是寫法不一樣 我忘記了
⑷ php yii框架操作redis問題。可以獲取到redis對象信息,但是set總是報錯。
1.在配置項中定義:
12345'SESSION_TYPE' => 'Redis', //session保存類型'SESSION_PREFIX' => 'sess_', //session前綴'REDIS_HOST' => '127.0.0.1' //REDIS伺服器地址'REDIS_PORT' => 6379, //REDIS連接埠號'SESSION_EXPIRE' => 3600, //SESSION過期時間
2.在ThinkPHP\Library\Think\Session\Driver目錄下新建Redis.class.php文件
文件內容如下:
<?phpnamespace Think\Session\Driver;class Redis {// Redis連接對象 private $redis;// Session過期時間 private $expire; /** * 打開方法 * @param type $path * @param type $name * @return type */ public function open($path, $name) { $this->expire = C('SESSION_EXPIRE') ? C('SESSION_EXPIRE') : ini_get('session.gc_maxLifetime'); $this->redis = new Redis(); return $this->redis->connect(C('REDIS_HOST'), C('REDIS_PORT')); } /** * 關閉 * @return type */ public function close() { return $this->redis->close(); } /** * 讀取 * @param string $id * @return type */ public function read($id) { $id = C('SESSION_PREFIX') . $id; $data = $this->redis->get($id); return $data ? $data : ''; } /** * 寫入 * @param string $id * @param type $data * @return type */ public function write($id, $data) { $id = C('SESSION_PREFIX') . $id; return $this->redis->set($id, $data, $this->expire); } /** * 銷毀 * @param string $id */ public function destroy($id) { $id = C('SESSION_PREFIX') . $id; $this->redis->delete($id); } /** * 垃圾回收 * @param type $maxLifeTime * @return boolean */ public function gc($maxLifeTime) { return true; }}
memcached的方法和Redis差不多一樣!
⑸ yii框架怎麼載入新的配置文件
OK 知道就好~~~
⑹ yii2框架自動調用js文件的配置怎麼設置
在yii2中,由於yii2版本升級導致了,很多yii2的用法跟yii1有著很大的區別,這幾天一直在view層的視圖界面徘徊著,遇到什麼問題呢? 問題就是搞不清我該如何去引入CSS,JS文件了!也看了社區中其它有經驗的大神的教程,也按著做了,但是還是有一些問題存在著,比如說yii2的項目打開後,頭部和尾部是公共的,該如何去掉?以及如何才能不改動原main.php文件的情況下,去引入JS,CSS文件,也許有一種辦法就是寫一個xxxAsset.php的配置文件,然後通過xxx Asset::register($this)可以引入文件,但是這下我又遇到問題了,碰到了這句代碼無效,不起作用,在firebug打開後,head里沒有引入任何的CSS,JS文件,樣式也變得亂七八糟,後來我又查了下相關資料,恰巧,下了一個其他人發的yii2後台模版,於是,今天早上我大概了看了下後台的樣式是怎麼布局的,總結了下:
1、在前台view中最簡單不過的就是像之前那樣一個文件一個文件的引入,於是在頂部使用use調用代碼段
use yii\helpers\Html;
然後在下面的Html中可以這樣調用
<?=Html::jsFile('@web/***/js/***.js')?>//這里***代表你的目錄名或者文件名
<?=Html::cssFile('@web/***/css/***.css')?>//***同上
這樣的話就不需要動其他文件,直接引入文件就好了,需要哪個引入哪個,當然這樣寫的話就是每次得寫很多行代碼去載入,最好還是寫到配置文件中,但是用配置文件來引入這個問題我暫時還沒弄通,後面如果找到原因我會分享給大家
2、前台這樣引入,那麼在controller中怎麼自定義樣式文件呢
在控制器中加上以下代碼
public $layout = 'layout';//在類中定義一個變數,名為$layout
注意的是這個layout在你的view中有個目錄叫layouts,在這個目錄下,我新建了一個文件名為layout.php,在其中我加上一句代碼
<?php echo $content; ?>
這樣控制器就會自動去找當前視圖目錄下的layouts目錄下的載入視圖文件的php文件
以上的幾行簡短的代碼就解決了新手不知道該如何去載入CSS,JS文件的問題,大家如果覺得寫***Asset.php文件會有問題,就用我這種辦法,後期等熟悉了yii2之後在改用其他的辦法去載入
另外,我再補充下,在view中怎麼去跳轉鏈接到其他的視圖文件
同樣在頂部先引入類庫
use yii\helpers\Url;
然後再需要鏈接跳轉的地方這樣寫:
<?phpecho Url::toRoute('post/index');?>//post為你的當前控制器名,index為view模版
⑺ yii配置文件main.php配置mysql
這個報錯是調回資料庫連接字元串不能為空,檢查是否注釋。在資料庫鏈接配置的地方。
⑻ YII框架和THINKPHP的區別
這不是一篇評測文章。只是我的喃喃碎語,不計較真。而且,下面的內容真的會很雜,不全面,而且你不可能有和我一樣的開發經歷。所以對於某些我醉心的特性,你可能不會理解。同樣的,我也不可能全部理解你為何對某一項特性十分喜歡。
關於ThinkPHP(以下簡稱TP)和Yii Framework(以下簡稱Yii)的背景、作者和速度方面就不涉及了。因為速度是一個很復雜的問題,牽扯的因素很多。我不得不承認ThinkPHP是 一個是國內框架運營方面的榜樣(當FleaPHP/QeePHP最火的那陣,我說過FleaPHP/QeePHP會倒的)。
運行環境:
Windows NT ACER 5.1 build 2600 (Windows XP Professional Service Pack 3) i586
Apache/2.2.14 (Win32) DAV/2 mod_autoindex_color PHP/5.3.1 mod_apreq2-20090110/2.7.1 mod_perl/2.0.4 Perl/v5.10.1
Mysql 5.1.4
下載的代碼:
ThinkPHP 2.1,帶擴展、示例和文檔完整包,發布於2011年5月1日,下載地址是 http://thinkphp.cn/Down/download/178
Yii 1.1.7,內含框架、實例和環境檢測,下載地址 http://yii.googlecode.com/files/yii-1.1.7.r3135.tar.gz 文檔需要另外下載
中文化方面,TP和Yii都可以滿足中文用戶的需求。但是由於Yii是國際化的項目,所以代碼的注釋仍舊是英文。不過兩個框架的作者都是國人(沒錯,Yii作者的國籍仍舊是中國),所以交流起來還是很方便的。
是Yii自帶了一個環境檢測腳本,可以告訴你當前的主機環境是否滿足Yii的需求。檢測的內容也比較詳細。我覺得這點比較方便。TP最低需要PHP5.0支持,而Yii最低需要PHP 5.1.0支持。由於我使用PHP 5.3,所以對我來說沒有什麼區別。
Yii是純面向對象的的框架,而TP提供了一系列單字母函數。相比之下我更喜歡Yii的方式,因為可以避免項目之間的沖突。
TP在以前的版本的基類Base類,當時就和一個整合Ucenter時的類沖突了,一度很苦惱。現在TP的各種基類仍舊是直接命名,如Think 類。在項目開發過程中就會體會命名沖突的痛苦之處。Yii則在框架的類都加上了C前綴(介面是I前綴),有效地避免了這個問題。Yii中的 CComponent是所有類的基類,可以看看CComponent的代碼,很有用。
說到命名問題了,就不得不說自動導入的問題。TP的類導入和Yii的代碼風格差不多。但是Yii還支持PHP的命名空間和自定義autoload方法。
TP有個特色叫項目編譯。我覺得與其使用項目編譯,還不如使用APC。在Yii中也有個yiilite.php文件,裡面就包含了Yii的所有核心類。Yii作者表示在沒有APC的情況下,還是不要使用這個「編譯」好的文件,因為反而會增加系統開銷。
TP中還在第一次訪問的時候自動生成項目,我覺得這一點和自動編譯一樣,都是我不喜歡的。我對每添加一個if都很敏感,這種判斷讓我很糾結。比如說 TP在每次運行的時候都要檢測PHP版本,而Yii則單獨做了一個內容更詳細的環境監測腳本。我既然要用這個框架,我在第一次使用的時候,肯定就知道能不 能在當前環境上使用了,為什麼要每次都要檢測呢。當時我就說過,TP為用戶做了太多事情。比如舊版本中的TopN函數。
Yii的組件思路是非常不錯的,用起來十分地舒服。從session到cache,你可以無縫地更換所有的組件而無需重構項目。而且Yii的延遲加 載也做得比較徹底,每個組件都是用到的時候才載入。比如,TP中,如果配置了session自動打開,則TP在應用初始化的時候執行 session_start()。而Yii則是你用到session的時候才打開session。
說到項目的配置文件,TP要求是config.php,而Yii則比較靈活,支持多配置文件。
當初TP很推崇自己的ThinkAjax,現在也改用JQuery。這一點是進步。
TP做了很多小實例,這一點值得Yii學習。Yii在這一方面正在有一個叫yii playground的實例網站在開發中(http://code.google.com/p/yiiplayground/)。
TP的動態模型可以實現不需要定義Model。但是在實際的項目中,我更傾向於使用Yii的方式。順便說一句,將label定義在model中,為我的日常開發帶來了許多方便之處。
剛才提到TP的項目自動生成,Yii中也有這種工具。而且比起TP,Yii的工具更加強大而且可擴展。
從TP的代碼中,有人可以看出其作者熟悉JAVA。而從Yii的代碼中,有人會發現其作者熟悉.Net。這常常是我身邊人看到代碼的時候發生的小插曲。
Yii封裝了大量的頁面控制項和類庫,也是Yii如此吸引我的一點。這是TP短期無法比擬的,在TP的使用過程中總遇到這樣那樣的問題,讓我感覺TP對我反而是阻礙。而Yii真的是,舒服,實在是太好用了!
無論從代碼規范、設計思路、類庫豐富程度上來說,TP都遠遠不及Yii。有人說你看TP多簡潔,Yii太臃腫了。錯了!簡單和簡潔不是一回事。TP 那叫簡單,你讀讀Yii的代碼吧,那才叫簡潔。至於臃腫,去看看Zend Framework就知道了。(順便說一句,我很喜歡Zend Framework,它是學習設計的典範)
說到讀代碼。對於程序員真的很難嗎?讀寫得好的代碼應該是一種享受才對。Yii的學習曲線是比TP高那麼一點點,但是對比Yii的巨大優勢而言不算什麼了。而且,我認為在遇到學習困難就退縮或者認為Yii就像天書一樣的人,還是轉行吧。
以上是應一篇評論所寫的。對比TP1,現在的TP2的確有了很多進步,但是還是存在一些問題。對比Yii……,TP真的沒有可比的能力。抱歉讓TP的fans失望了。
那就下定論了嗎?不,不是的。從類庫到框架,再到解決方案。什麼是最好的?每一個人都有不同發說法,這是因為每一個人的思維習慣不同,遇到的問題不同,問題所在的環境也不同。怎麼能奢求所有人都有同一個選擇呢?
還是那句,適合,就是最好的。對我來說,Yii是最好的。
⑼ Yii 框架,我想添加一個配置文件meta.php,以數組的形式載入CSS和JS文件,怎麼搞啊
換膚吧?meta.php文件l裡面return array()
⑽ php yii框架怎麼設置字體編碼格式
今天在開發的時候需要將excel文件中數據導入到相關的配置文件中,我按照過去經常使用的方法,先將excel導出成csv文件,然後使用fgetcsv函數讀取文件的內容,通過Yii框架中的CConfigure類導出成配置文件,然後在檢查的時候發現導出的數組中有些值中間有一些多餘的反斜杠,這些反斜杠一般出現在繁體中文或者日文的文字中。
一開始我先檢查了csv和excel文件中的欄位,發現並沒有什麼問題,之後我查看了CConfigure類中的saveAsString函數,發現他使用了php中的var_export函數來實現導入配置文件的功能,然後,我又使用var_export輸出會出現問題的某個欄位,發現確實在字元串中添加了反斜杠,而我直接使用echo或者var_mp輸出時,則沒有這個情況發生,這個時候我明白問題是出在var_export這個函數上。
在查閱了相關的資料後我發現var_export這個函數會自動轉義,也許是這個原因導致了字元串中自動添加了反斜杠,可是字元串本身並沒有特殊字元,為什麼var_export還是會添加反斜杠,這個讓我百思不得其解,我查看了出現問題的字元串的2進制編碼,發現出現反斜杠的地方本身的單個字元的ascii碼也是反斜杠,也就是說可能是var_export在轉義時針對單個反斜杠字元進行了轉義?這個原因我最後也沒有搞明白。
不過在我不知道如何解決這個問題的時候,我突然想到我的csv的文字編碼是gbk的,因為是通過excel直接轉的格式,然後我導出的文件編碼是utf-8的格式,同時我的代碼本身也是utf-8的格式,雖然我最後通過格式轉換,成功把gbk的字元串轉換成utf-8導出,但是在轉換的過程中可能會出現問題(當時想的是這樣,不過之後考慮了一下,因為之前在gbk格式下使用var_export已經出現了問題,因此應該不是轉換過程中的問題,應該是var_export處理gbk格式的漢字字元串時產生的bug?),於是我將csv文件全部轉換成utf-8格式,重新導入文件,成功解決。
其實在解決的過程中,很早就想到可能是編碼的問題,但是一直沒有發現excel轉換的csv文件的格式問題,因為之前導出的配置文件沒有漢字,因此沒有出現過這一類的問題,於是就忽略了,不過最後雖然解決了問題,但是問題本身的原因還是不明,推測極有可能是因為gbk編碼和var_export的兼容導致的問題,果然開發中應該還是盡量使用utf-8統一編碼,應該會減少很多不明的錯誤。
2013.1.19更新:經過思考,覺得應該是對於gbk編碼的字元串使用var_export時,函數對於單個字元表示為反斜杠的字元添加了反斜杠的轉義,因此使得該處的字元變為兩個反斜杠,同時因為在顯示時使用了gbk編碼,導致添加的反斜杠作為前一個漢字字元的一部分被顯示,而原來的反斜杠字元則單獨顯示了出來。