资讯专栏INFORMATION COLUMN

【Laravel学习篇 · 二】在Laravel中借鉴Yii的params使用方法

liuhh / 2498人阅读

摘要:中的解决办法面对什么的情况,在中有一个很好的方法。博客原文地址学习篇二在中借鉴的一些使用方法有很多地方都不完善,还望大家指出修正,如果你觉得这个对你有用,还请点个赞,谢谢

前段时间本来准备学习 Laravel 的,后来因为换了工作的原因,又回到自己常用的 Yii 。现在要将 Laravel 重拾回来,开始学习这个被PHPer们喜爱的东西。

上一篇敢关于 Laravel 的文章 【Laravel学习篇 · 一】Windows下起步就遇麻烦。这一篇讲讲在 Laravel 中借鉴 Yii 的一些使用方法。


情景

在网站开发中,我们通常会有很多的基本固定的参数,比如站点标题copyrighturl等,看到这些我们通常会去config文件里面找,因为这些参数基本都是固定的,很少改动,就算改动也很简单。
但还有一些情况就是,如user表有一个字段gander0或者1,表示女生男生,在拿到数据在页面显示时肯定不应该显示01,而是转换为对应的文字信息。初学者可能是这样做的:

gander == 1): ?>
        性别:
    
        性别:
    
?>

但会随着网站的功能的变化发生变化,这时候需要添加一个2表示保密。那这时候我们还得去那个地方改动php的判断条件:

gander == 1): ?>
        性别:
    gander == 2): ?>
        性别:
    
        性别:
    
?>

这样的改动显然是不舒服的,万一老板说不需要有保密这个选项的时候,万一这样的改动有十个地方,万一......
这还是一个性别,如果还有其他很多的类似这样的操作,比如typeis_actived等等。面对这样的处理,有没有一些便捷、可扩展的配置呢?我们可以来看看Yii中的方法。

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 中借鉴 Yiiparams 使用方法,其他更多的关于 Laravel 的学习内容会在后续的不断学习中总结并分享出来。

About Me

博客: http://blog.helloarron.com
Github: https://github.com/ArronYR
Email: yangyun4814@gmail.com


原文地址:【Laravel学习篇 · 二】在Laravel中借鉴Yii的一些使用方法

有很多地方都不完善,还望大家指出修正,如果你觉得这个对你有用,还请点个赞,谢谢!

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/21236.html

相关文章

  • 2018年总结

    摘要:一直想做一个总结吧,拖延症,一直拖到了现在。设计模式在去年,月的时候,学习了大部分的设计模式。数据结构和算法不是科班出身,所以找了一本算法书,重头到尾,认真学习了一遍。学完感受就是,会写数据结构和算法还是会写,不会写的还是不会写。 工作了一年多了,这一年里,过的还是比较充实。一直想做一个总结吧,拖延症,一直拖到了现在。 1 设计模式 在去年3,4月的时候,学习了大部分的设计模式。设计模...

    张汉庆 评论0 收藏0
  • Laravel学习 · 一】Windows下起步就遇麻烦

    摘要:在看了之后,在下自己也搭建晚了一下,突然想到自己搭建这事还没完成呢。后面就是按照官方的方法安装但是由于网速什么的你懂的总是安装失败,没办法搜了一下解决办法。最后又可以继续愉快学习了。 很早前 phphub 出来的时候我就去注册了一个账号,而且它的源码是放在 github 上开源的,当时就想自己搭建着玩,它是基于 laravel 的,但是我以前都接触的是 CI 和 Yii ,不会 lar...

    YancyYe 评论0 收藏0
  • PHPer面试指南-Laravel

    摘要:简述的生命周期采用了单一入口模式,应用的所有请求入口都是文件。分发请求一旦应用完成引导和所有服务提供者都注册完成,将会移交给路由进行分发。此外,由于对动态方法的独特用法,也使测试起来非常容易。 本书的 GitHub 地址:https://github.com/todayqq/PH... Laravel 作为现在最流行的 PHP 框架,其中的知识较多,所以单独拿出来写一篇。 简述 La...

    alaege 评论0 收藏0
  • 打通LaravelYii2任督

    摘要:于是直接暴力开干,找说明书查询。测试登录,果然不通。一般情况下,这时候应该遵照官方手册,开始建立自己相配套的数据库体系。数据库是连通了,出现了熟悉的错误找不到表。登入登出完全正常,终于可以和和和美美地住在一个小房子里了。 Yii2与Laravel相爱相杀已经很久了,导致广大PHP爱好者必须选边站队,生怕自己站错了阵营。作为一个已经上了Yii2贼船很久的人想换船是需要很大勇气的,能不能就...

    kohoh_ 评论0 收藏0
  • 主流PHP框架性能非权威测试

    摘要:主流框架性能非权威测试作为一个开发者,而且是初创企业团队的技术开发者,选择开发框架是个很艰难的事情。用的话,语法有点啰嗦,前后端代码分离有点小麻烦,不过性能是非常好的,而且已经有众多国内大公司在使用了,出现意外可以快速的找到大牛答疑解惑。 主流PHP框架性能非权威测试 作为一个PHP开发者,而且是初创企业团队的技术开发者,选择开发框架是个很艰难的事情。 用ThinkPHP的话,招聘一个...

    imccl 评论0 收藏0

发表评论

0条评论

liuhh

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<