Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/248.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 跨所有模板注入全局变量_Php_Symfony1_Symfony 1.4 - Fatal编程技术网

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对象中提取