拥有Laravel中所有页面的常量

时间:2016-02-27 12:46:27

标签: php laravel ip constants

我希望有一些常量可以将IP,平台,浏览器放在一个文件中,并在所有视图和控制器中使用,如下所示:

//在app / config / constants.php里面

return [
    'IP' => 'some ip'
];

//控制器内部

echo Config::get('constants.IP');

但我没有使用Request::ip()至少甚至更好,而是使用parse_user_agent()['platform']代码链接为here

2 个答案:

答案 0 :(得分:1)

您可以在配置文件中添加以下内容:

return [
    'ip' => app('request')->ip()
];

我在网站配置中使用了一个小的自定义配置,例如,让我们说你想要使用这样的东西:

/**
 * Get config/constants.php
 *
 * [
 * 'person' => [
 *     'name' => 'Me',
 *     'age' => 1000
 *   ]
 * ];
 */
$name = constants('person.name');

因此,要实现这一点,您需要编写一个类似的函数:

// Helpers/Common.php
function constants($key = null)
{
    $constants = config('constants');
    return is_null($key) ? $constants : array_get($constants, $key);
}

现在,您可以在composer.json文件中添加以下files条目:

"psr-4": {
        "App\\": "app/"
 },
 "files": ["Helpers/Common.php"]

然后,您需要在constants.php目录中添加config,例如:

<?php

return [
    "ip" => app('request')->ip(),
    "person" => [
        "name" => "Sheikh Heera",
        "age" => 10000
    ],
];

最后,只需从终端运行composer-dump即可完成。因此,如果数组中有ip键,那么您可以尝试这样做:

$ip = constants('ip');

从视图(Blade)中,您可以使用以下内容来回显ip

{{ constants('ip') }}

让我们总结整个过程:

  • 在项目根目录(或在应用程序内部,如果您愿意)创建一个目录为Helpers

  • 在该目录中创建Common.php文件并放入数组(返回)

  • constants函数(上面给出)放在Common.php文件

  • files文件中添加composer.json(上面给出的)密钥

  • 运行composer-dump更新自动加载文件

那就是它。使用描述您的domian的文件名和帮助程序函数名称,因此您可以使用constants而不是site代替function method2 (callback) { return $.ajax({ type: 'GET', url: 'Some URL', dataType: 'jsonp', success: function(data2){ callback(null, data2); // Call callback, first parameter if there was an error, second the result } }); } function method3 (callback){ return $.ajax({ type: 'GET', url: 'Some URL', dataType: 'jsonp', success: function(data3){ callback(null, data3); } }); } function method4(callback){ return $.ajax({ type: 'GET', url: 'Some URL', dataType: 'jsonp', success: function(data4){ callback(null, data4); } }); } /* ... */ async.series([ method2, method3, method4, /* ... */ ], function(err, results){ console.log(results); // Find all the stuff you passed to the callbacks, e.g. results = [data2, data3, data4]; }); 或您的域名。

答案 1 :(得分:0)

您可以创建(或使用现有的)服务提供者,并在注册方法中使用以下代码:

view()->share('constants', config('constants', []));

在视图帮助函数上使用share将在所有视图上共享变量。

您现在可以在任何视图中访问此变量,例如使用blade:

{{ array_get($constants, 'ip') }}