该站点的配置位于:directory(config / site)
示例:app / config / site / video.php
return [
'max-size-upload-video' => [
'type' => 'integer',
'title' => 'Set Maximum Size Upload Video',
'description' => 'Set the maximum size upload of videos',
'value' => '10000000',
],
];
控制器中的
Config::get('max-size-upload-video')
用于获取值,这不是Config :: get的正常行为。
我的问题是我怎么能做出这样的事情? 我如何使Config :: get('the-property-title')为我获取值,而不是像使用Config :: get
这样的正常方式编写完整路径答案 0 :(得分:0)
通过 Illuminate \ Foundation \ Bootstrap \ LoadConfiguration 类在应用程序引导过程中加载配置文件。如果要更改配置文件的加载方式,则需要通过扩展现有加载器来实现自己的加载器。小心只更改自己的配置文件的加载方式 - 不要改变Laravel配置文件的加载方式。
示例加载程序:
class CustomLoadConfiguration extends LoadConfiguration
{
protected function loadConfigurationFiles(Application $app, RepositoryContract $config)
{
foreach ($this->getConfigurationFiles($app) as $key => $path) {
if ($key === 'video') {
$values = require $path;
if (is_array($values)) {
foreach ($values as $k => $value) {
$config->set($k, $value);
}
} else $config->set($key, $values);
} else {
$config->set($key, require $path);
}
}
}
}
在您拥有自己的加载程序后,在 App \ Http \ Kernel 类中添加以下内容:
protected function bootstrappers()
{
$bootstrappers = parent::bootstrappers();
if (($key = array_search($bootstrappers, 'Illuminate\Foundation\Bootstrap\LoadConfiguration')) !== FALSE) {
$bootstrappers[$key] = 'Your\Namespace\CustomLoadConfiguration';
}
return $bootstrappers;
}
警告:在此之前,请问问自己是否真的需要这个。配置文件是命名空间以避免冲突 - 如果禁用命名空间,则存在重复密钥加载到配置形式的不同文件的风险,其中一个文件覆盖另一个文件。