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