我有基于Nette框架的小应用程序.
我已经创建了constants.neon文件并将其添加到容器中.将有一些数据可以从演示者,模型,表格等获得.
如何访问中的值constants.neon?
我知道有一种方法,(new \Nette\Neon\Neon())->decode([NEON_FILE_PATH])但我不认为这是right way.我怀疑使用后,addConfig(...)在bootstrap.php从这些配置文件中的所有数据应可遍布系统.
<?php
// bootstrap.php
require __DIR__ . '/../vendor/autoload.php';
$configurator = new Nette\Configurator;
$configurator->setDebugMode(true); // enable for your remote IP
$configurator->enableDebugger(__DIR__ . '/../log');
$configurator->setTempDirectory(__DIR__ . '/../temp');
$configurator->createRobotLoader()
->addDirectory(__DIR__)
->addDirectory(__DIR__ . '/../vendor/phpoffice/phpexcel')
->register();
$configurator->addConfig(__DIR__ . '/config/config.neon');
$configurator->addConfig(__DIR__ . '/config/config.local.neon');
$configurator->addConfig(__DIR__ . '/config/constants.neon');
$container = $configurator->createContainer();
return $container;
Run Code Online (Sandbox Code Playgroud)
我的constants.neon档案:
constants:
DP_OPT = 'DP'
PP_OPT = 'PP'
DV_OPT = 'DV'
ZM_OPT = 'ZM'
TP_OPT = 'TP'
Run Code Online (Sandbox Code Playgroud)
谢谢
更新#1
弄清楚我使用了错误的.neon文件格式.
constants:
DP_OPT: DP
PP_OPT: PP
DV_OPT: DV
ZM_OPT: ZM
TP_OPT: TP
Run Code Online (Sandbox Code Playgroud)
如果将常量存储parameters在neon文件中的数组中,您将能够从presenter的上下文中访问它,如下所示:
// $this is instance of Nette\Application\UI\Presenter
$this->context->parameters['constants']
Run Code Online (Sandbox Code Playgroud)
霓虹文件:
parameters:
constants:
DP_OPT: DP
PP_OPT: PP
DV_OPT: DV
ZM_OPT: ZM
TP_OPT: TP
Run Code Online (Sandbox Code Playgroud)
请注意,这可能不是推荐的方法.有关更多信息,请参阅如何将演示者用作服务.
要完成Jan的答案,以下是将配置参数传递给模型的方法.
使您的模型类期望它作为构造函数参数:
namespace App\XXX;
class MyModel
{
/** @var array */
private $constants;
public function __construct(array $constants)
{
$this->constants = $constants;
}
Run Code Online (Sandbox Code Playgroud)
然后在config(Neon)中将模型注册为服务:
services:
- App\XXX\MyModel(%constants%)
Run Code Online (Sandbox Code Playgroud)
将该模型注入演示者时:
class DefaultPresenter extends BasePresenter
{
/** @var App\XXX\MyModel @inject */
public $myModel;
Run Code Online (Sandbox Code Playgroud)
它会在实时化时自动收到你的'常数'.
| 归档时间: |
|
| 查看次数: |
2776 次 |
| 最近记录: |