Php 跨所有模板注入全局变量
我想问,是否有可能添加一个全局变量,如Php 跨所有模板注入全局变量,php,symfony1,symfony-1.4,Php,Symfony1,Symfony 1.4,我想问,是否有可能添加一个全局变量,如sf_参数或sf_数据,sf_用户,sf_上下文,或者是否有可能扩展其中一个 我想在运行时内更改一些应用程序参数(在部分、模板和操作中)。 现在sf文档建议使用类似于app.yml,但我的问题是,在设置此参数之前,我需要执行一些代码。因此,需要非常动态地设置它们,这在app.yml中是不可能的 你们中有人对如何在symfony中实现一个新的全局变量或全局对象提出了一些建议吗?存储配置数据的最佳位置是在项目的任何部分都可以使用的sfConfig对象中。因此,您
sf_参数
或sf_数据
,sf_用户
,sf_上下文
,或者是否有可能扩展其中一个
我想在运行时内更改一些应用程序参数(在部分、模板和操作中)。
现在sf文档建议使用类似于app.yml
,但我的问题是,在设置此参数之前,我需要执行一些代码。因此,需要非常动态地设置它们,这在app.yml
中是不可能的
你们中有人对如何在symfony中实现一个新的全局变量或全局对象提出了一些建议吗?存储配置数据的最佳位置是在项目的任何部分都可以使用的
sfConfig
对象中。因此,您必须查询数据库中的配置数据,并通过sfConfig::set('variableName',$value)
填充sfConfig对象。因此:
sfConfig
对象存储配置数据的最佳位置是
sfConfig
对象,该对象在项目的任何部分都可用。因此,您必须查询数据库中的配置数据,并通过sfConfig::set('variableName',$value)
填充sfConfig对象。因此:
sfConfig
对象我同意@olivierw的解决方案 对于个人项目,我有一个名为
Config
的表,我使用过滤器加载内容,因此我可以访问项目中的任何位置
过滤器lib/filter/configFilter.php
:
<?php
class configFilter extends sfFilter
{
public function execute ($filterChain)
{
// get the config
$configs = Doctrine_Core::getTable('Config')>findAll();
foreach($configs as $config)
{
sfConfig::set('my_config_'.$config->getName(), $config->getContent());
}
// execute next filter
$filterChain->execute();
}
}
现在,您可以通过以下方式访问任何信息:
sfConfig::get('my_config_key');
我的Config
表的schema.yml
:
Config:
柱:
名称:{type:string(255)}
内容:{type:string(1000)}
我同意@olivierw的解决方案
对于个人项目,我有一个名为Config
的表,我使用过滤器加载内容,因此我可以访问项目中的任何位置
过滤器lib/filter/configFilter.php
:
<?php
class configFilter extends sfFilter
{
public function execute ($filterChain)
{
// get the config
$configs = Doctrine_Core::getTable('Config')>findAll();
foreach($configs as $config)
{
sfConfig::set('my_config_'.$config->getName(), $config->getContent());
}
// execute next filter
$filterChain->execute();
}
}
现在,您可以通过以下方式访问任何信息:
sfConfig::get('my_config_key');
我的Config
表的schema.yml
:
Config:
柱:
名称:{type:string(255)}
内容:{type:string(1000)}
所说的“几乎无处不在”是指您也想从模型和视图中访问吗?您能描述一下您想对这个全局变量执行哪种操作以及在哪里执行吗?我所有保存在数据库中的项目配置数据我想做的是创建一个singleton类,该类将从构造函数内的数据库中获取所有数据并设置为对象属性,所以每当我需要配置值时,我就可以从singleton objectby“几乎无处不在”中提取。你的意思是你也想从模型和视图中访问吗?你能描述一下你想在这个全局变量上执行哪种操作以及在哪里执行吗?我所有保存在数据库中的项目配置数据我想做的是创建一个singleton类,该类将从构造函数内的数据库中获取所有数据,并设置为object属性,以便在任何时候需要配置值时都可以从singleton对象中提取