摘要:中的解決辦法面對(duì)什么的情況,在中有一個(gè)很好的方法。博客原文地址學(xué)習(xí)篇二在中借鑒的一些使用方法有很多地方都不完善,還望大家指出修正,如果你覺得這個(gè)對(duì)你有用,還請(qǐng)點(diǎn)個(gè)贊,謝謝
前段時(shí)間本來(lái)準(zhǔn)備學(xué)習(xí) Laravel 的,后來(lái)因?yàn)閾Q了工作的原因,又回到自己常用的 Yii ?,F(xiàn)在要將 Laravel 重拾回來(lái),開始學(xué)習(xí)這個(gè)被PHPer們喜愛的東西。
上一篇敢關(guān)于 Laravel 的文章 【Laravel學(xué)習(xí)篇 · 一】Windows下起步就遇麻煩。這一篇講講在 Laravel 中借鑒 Yii 的一些使用方法。
在網(wǎng)站開發(fā)中,我們通常會(huì)有很多的基本固定的參數(shù),比如站點(diǎn)標(biāo)題、copyright、url等,看到這些我們通常會(huì)去config文件里面找,因?yàn)檫@些參數(shù)基本都是固定的,很少改動(dòng),就算改動(dòng)也很簡(jiǎn)單。
但還有一些情況就是,如user表有一個(gè)字段gander為0或者1,表示女生和男生,在拿到數(shù)據(jù)在頁(yè)面顯示時(shí)肯定不應(yīng)該顯示0或1,而是轉(zhuǎn)換為對(duì)應(yīng)的文字信息。初學(xué)者可能是這樣做的:
gander == 1): ?> 性別: 性別: ?>
但會(huì)隨著網(wǎng)站的功能的變化發(fā)生變化,這時(shí)候需要添加一個(gè)2表示保密。那這時(shí)候我們還得去那個(gè)地方改動(dòng)php的判斷條件:
gander == 1): ?> 性別: gander == 2): ?> 性別: 性別: ?>
這樣的改動(dòng)顯然是不舒服的,萬(wàn)一老板說(shuō)不需要有保密這個(gè)選項(xiàng)的時(shí)候,萬(wàn)一這樣的改動(dòng)有十個(gè)地方,萬(wàn)一......
這還是一個(gè)性別,如果還有其他很多的類似這樣的操作,比如type、is_actived等等。面對(duì)這樣的處理,有沒有一些便捷、可擴(kuò)展的配置呢?我們可以來(lái)看看Yii中的方法。
面對(duì)什么的情況,在 Yii 中有一個(gè)很好的方法。當(dāng)你開始學(xué)習(xí) Yii 的時(shí)候,你已經(jīng)注意到了config文件夾中的配置文件main.php,而且你會(huì)發(fā)現(xiàn),在這個(gè)main.php文件中有一個(gè)params選項(xiàng),這個(gè)是干嘛的呢?
// Yii 1 中 "params" => array( "adminEmail" => "[email protected]", "gander" => [ 0 => "女生" 1 => "男生", 2 => "保密" ], // ...... ), // Yii 2 中 $params = array_merge( require(__DIR__ . "/../../common/config/params.php"), require(__DIR__ . "/params.php") ); "params" => $params, // __DIR__ . "/params.php" 中的內(nèi)容 return [ "adminEmail" => "[email protected]", "gander" => [ 0 => "女生" 1 => "男生", 2 => "保密" ] ];
那在頁(yè)面中這些數(shù)據(jù)是怎么使用的呢?
// controllers/UserController.php public function actionIndex() { $user = User::findOne(1); return $this->render("index",[ "user" => $user ]) } // views/user/index.php // Yii 1 性別:params["gander"][$user->gander];?> // Yii 2 性別:params["gander"][$user->gander];?>
這樣的方式是不是很舒服呢?寫代碼也方便很多呢?那在 Laravel 中如何去運(yùn)用這樣的方式呢?
Laravel中如何借鑒在 Laravel 中運(yùn)用 Yii 的這種方式其實(shí)也很簡(jiǎn)單,閱讀官方的文檔就會(huì)發(fā)現(xiàn)有一個(gè)東西叫config("name"),這個(gè)就是從配置文件夾config中回去配置細(xì)細(xì),比如config("app.url")會(huì)獲取到/config/app.php中的url配置項(xiàng)。
// config/app.php return [ "debug" => env("APP_DEBUG", false), "url" => "http://blog.helloarron.com", "timezone" => "UTC", ]
看到這里你大概已經(jīng)知道了如何實(shí)現(xiàn)params的設(shè)置了。Let"s GO ~
在config文件夾中新建文件params.php,然后內(nèi)容如下:
return [ "adminEmail" => "[email protected]", "gander" => [ 0 => "女生" 1 => "男生", 2 => "保密" ], "is_active" => [ 0 => "未激活", 1 => "激活" ], ];
然后blade頁(yè)面中使用config("name")調(diào)用即可:
性別:{{ config("params.gander")[$user->gander] }}
存在的問(wèn)題
在網(wǎng)友@Outshine的提示下,上面的方法在Yii中是存在問(wèn)題的:
國(guó)際化
在IDE里提示
關(guān)于國(guó)際化,上面在params中的valae不用寫中文,而是約定好的一些變量,然后通過(guò)Yii::t("filename", Yii::app()->params"gander");這樣就解決了國(guó)際化的問(wèn)題。關(guān)于在IDE里提示,這個(gè)就做不到了。
所以,關(guān)于從數(shù)據(jù)庫(kù)獲取一些需要轉(zhuǎn)換的值的時(shí)候,可以在對(duì)應(yīng)的模型里面做:
//model中 public static function getTypeOption(){ return [ self::TYPE_A => Yii::t("model","type a"), self::TYPE_B => Yii::t("model","type b") ]; } //view中 $form->field($model,"type")->dropdownList($model->getTypeOption()[$model->type]);
感謝網(wǎng)友@Outshine的意見和提供的一些資料:
getyii.com
YII2干貨集
這個(gè)是在 Laravel 中借鑒 Yii 的 params 使用方法,其他更多的關(guān)于 Laravel 的學(xué)習(xí)內(nèi)容會(huì)在后續(xù)的不斷學(xué)習(xí)中總結(jié)并分享出來(lái)。
About Me博客: http://blog.helloarron.com
Github: https://github.com/ArronYR
Email: [email protected]
原文地址:【Laravel學(xué)習(xí)篇 · 二】在Laravel中借鑒Yii的一些使用方法
有很多地方都不完善,還望大家指出修正,如果你覺得這個(gè)對(duì)你有用,還請(qǐng)點(diǎn)個(gè)贊,謝謝!
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/21236.html
摘要:一直想做一個(gè)總結(jié)吧,拖延癥,一直拖到了現(xiàn)在。設(shè)計(jì)模式在去年,月的時(shí)候,學(xué)習(xí)了大部分的設(shè)計(jì)模式。數(shù)據(jù)結(jié)構(gòu)和算法不是科班出身,所以找了一本算法書,重頭到尾,認(rèn)真學(xué)習(xí)了一遍。學(xué)完感受就是,會(huì)寫數(shù)據(jù)結(jié)構(gòu)和算法還是會(huì)寫,不會(huì)寫的還是不會(huì)寫。 工作了一年多了,這一年里,過(guò)的還是比較充實(shí)。一直想做一個(gè)總結(jié)吧,拖延癥,一直拖到了現(xiàn)在。 1 設(shè)計(jì)模式 在去年3,4月的時(shí)候,學(xué)習(xí)了大部分的設(shè)計(jì)模式。設(shè)計(jì)模...
摘要:在看了之后,在下自己也搭建晚了一下,突然想到自己搭建這事還沒完成呢。后面就是按照官方的方法安裝但是由于網(wǎng)速什么的你懂的總是安裝失敗,沒辦法搜了一下解決辦法。最后又可以繼續(xù)愉快學(xué)習(xí)了。 很早前 phphub 出來(lái)的時(shí)候我就去注冊(cè)了一個(gè)賬號(hào),而且它的源碼是放在 github 上開源的,當(dāng)時(shí)就想自己搭建著玩,它是基于 laravel 的,但是我以前都接觸的是 CI 和 Yii ,不會(huì) lar...
摘要:簡(jiǎn)述的生命周期采用了單一入口模式,應(yīng)用的所有請(qǐng)求入口都是文件。分發(fā)請(qǐng)求一旦應(yīng)用完成引導(dǎo)和所有服務(wù)提供者都注冊(cè)完成,將會(huì)移交給路由進(jìn)行分發(fā)。此外,由于對(duì)動(dòng)態(tài)方法的獨(dú)特用法,也使測(cè)試起來(lái)非常容易。 本書的 GitHub 地址:https://github.com/todayqq/PH... Laravel 作為現(xiàn)在最流行的 PHP 框架,其中的知識(shí)較多,所以單獨(dú)拿出來(lái)寫一篇。 簡(jiǎn)述 La...
摘要:于是直接暴力開干,找說(shuō)明書查詢。測(cè)試登錄,果然不通。一般情況下,這時(shí)候應(yīng)該遵照官方手冊(cè),開始建立自己相配套的數(shù)據(jù)庫(kù)體系。數(shù)據(jù)庫(kù)是連通了,出現(xiàn)了熟悉的錯(cuò)誤找不到表。登入登出完全正常,終于可以和和和美美地住在一個(gè)小房子里了。 Yii2與Laravel相愛相殺已經(jīng)很久了,導(dǎo)致廣大PHP愛好者必須選邊站隊(duì),生怕自己站錯(cuò)了陣營(yíng)。作為一個(gè)已經(jīng)上了Yii2賊船很久的人想換船是需要很大勇氣的,能不能就...
摘要:主流框架性能非權(quán)威測(cè)試作為一個(gè)開發(fā)者,而且是初創(chuàng)企業(yè)團(tuán)隊(duì)的技術(shù)開發(fā)者,選擇開發(fā)框架是個(gè)很艱難的事情。用的話,語(yǔ)法有點(diǎn)啰嗦,前后端代碼分離有點(diǎn)小麻煩,不過(guò)性能是非常好的,而且已經(jīng)有眾多國(guó)內(nèi)大公司在使用了,出現(xiàn)意外可以快速的找到大牛答疑解惑。 主流PHP框架性能非權(quán)威測(cè)試 作為一個(gè)PHP開發(fā)者,而且是初創(chuàng)企業(yè)團(tuán)隊(duì)的技術(shù)開發(fā)者,選擇開發(fā)框架是個(gè)很艱難的事情。 用ThinkPHP的話,招聘一個(gè)...
閱讀 1621·2019-08-29 13:53
閱讀 3222·2019-08-29 13:50
閱讀 867·2019-08-27 10:51
閱讀 577·2019-08-26 18:36
閱讀 1827·2019-08-26 11:00
閱讀 619·2019-08-26 10:36
閱讀 3229·2019-08-23 17:58
閱讀 2039·2019-08-23 15:17