热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

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

前段时间本来准备学习 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

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


推荐阅读
  • Day2列表、字典、集合操作详解
    本文详细介绍了列表、字典、集合的操作方法,包括定义列表、访问列表元素、字符串操作、字典操作、集合操作、文件操作、字符编码与转码等内容。内容详实,适合初学者参考。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • Commit1ced2a7433ea8937a1b260ea65d708f32ca7c95eintroduceda+Clonetraitboundtom ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • 猜字母游戏
    猜字母游戏猜字母游戏——设计数据结构猜字母游戏——设计程序结构猜字母游戏——实现字母生成方法猜字母游戏——实现字母检测方法猜字母游戏——实现主方法1猜字母游戏——设计数据结构1.1 ... [详细]
  • 本文介绍了PE文件结构中的导出表的解析方法,包括获取区段头表、遍历查找所在的区段等步骤。通过该方法可以准确地解析PE文件中的导出表信息。 ... [详细]
  • 本文总结了在开发中使用gulp时的一些技巧,包括如何使用gulp.dest自动创建目录、如何使用gulp.src复制具名路径的文件以及保留文件夹路径的方法等。同时介绍了使用base选项和通配符来保留文件夹路径的技巧,并提到了解决带文件夹的复制问题的方法,即使用gulp-flatten插件。 ... [详细]
  • 海马s5近光灯能否直接更换为H7?
    本文主要介绍了海马s5车型的近光灯是否可以直接更换为H7灯泡,并提供了完整的教程下载地址。此外,还详细讲解了DSP功能函数中的数据拷贝、数据填充和浮点数转换为定点数的相关内容。 ... [详细]
  • VueCLI多页分目录打包的步骤记录
    本文介绍了使用VueCLI进行多页分目录打包的步骤,包括页面目录结构、安装依赖、获取Vue CLI需要的多页对象等内容。同时还提供了自定义不同模块页面标题的方法。 ... [详细]
  • 本文介绍了使用哈夫曼树实现文件压缩和解压的方法。首先对数据结构课程设计中的代码进行了分析,包括使用时间调用、常量定义和统计文件中各个字符时相关的结构体。然后讨论了哈夫曼树的实现原理和算法。最后介绍了文件压缩和解压的具体步骤,包括字符统计、构建哈夫曼树、生成编码表、编码和解码过程。通过实例演示了文件压缩和解压的效果。本文的内容对于理解哈夫曼树的实现原理和应用具有一定的参考价值。 ... [详细]
  • 代理模式的详细介绍及应用场景
    代理模式是一种在软件开发中常用的设计模式,通过在客户端和目标对象之间增加一层中间层,让代理对象代替目标对象进行访问,从而简化系统的复杂性。代理模式可以根据不同的使用目的分为远程代理、虚拟代理、Copy-on-Write代理、保护代理、防火墙代理、智能引用代理和Cache代理等几种。本文将详细介绍代理模式的原理和应用场景。 ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
author-avatar
时尚潮_流早覀报_326
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有