2014-09-26 103 views
7

在laravel中,没有定义常量文件,所以我继续寻找一种方法来实现常量的使用。下面的方法是我设法把它放在一起:在laravel中定义常量

// app/config/constants.php 
return['CONSTANT_NAME' => 'value']; 

// index.blade.php 
{{ Config::get('constants.CONSTANT_NAME') }} 

现在,我的问题是;有没有一种更清晰的方式来检索我的常量?例如:

{{ Constant::get('CONSTANT_NAME') }} 

这是为了让我的视线更加美观,简洁,干净。

欣赏输入!

回答

8

一两件事你可以做的是share pieces of data across您的观点:

View::share('my_constant', Config::get('constants.CONSTANT_NAME')); 

把,在你的routes.php的顶部,然后不断的将在你的所有刀片意见访问:

{{ $my_constant }} 
+1

哈!不知道为什么我没有想到这一点,特别是因为我熟悉Laravel的共享功能! – Marfat 2014-09-26 15:33:34

4

Config类旨在替换常量的需要并发挥相同的作用。

app/config/constants.php返回一组键/值对,然后使用Config::get('constants.key')来访问它们。

你可以想象创建一个Constant类具有get功能的快捷方式:

class Constant { 
    public function get($key) { 
    return Config::get('constants.' . $key); 
    } 
} 

,但使用标准Laravel处理很可能是更好的其他Laravel开发人员试图用你熟悉代码。

1

在第5版中,您可以像@ msturdy建议的那样执行操作,除非您将常量存储在.env文件或生产环境中,作为服务器上实际的$ _ENVIRONMENT变量。

例.ENV项:

CONSTANT=value 

然后调用,像这样:

View::share('bladeConstant', env('CONSTANT')); 

然后加载:

{{ bladeConstant }} 
+1

.env不建议在生产环境中使用(https://github.com/vlucas/phpdotenv#usage-notes),它可能表现不可预知(因此,我认为在开发中甚至没有那么有用!)。 – toby1kenobi 2016-06-21 08:46:20

+0

但是,环境变量也可以在服务器上设置,而不是使用.env文件。其余部分保持不变。我已经更新了我的答案以更好地反映这一点。 – 2016-06-22 17:11:47