Php 按后端编辑app.yml中的值

Php 按后端编辑app.yml中的值,php,symfony1,doctrine,symfony-1.4,Php,Symfony1,Doctrine,Symfony 1.4,sfConfig::get('app\u max\u jobs\u on\u category') 我如何使管理员可以在后端编辑此值(最大作业数在类别上)? 是否每个用户都可以仅为自己编辑此内容?我认为您最好为这些设置创建一个数据库模型。例如,您可以在过滤器中查询数据库(请参阅) 例如: # apps/frontend/config/app.yml all: active_days: 30 max_jobs_on_homepage: 10 max_jobs_on_c

sfConfig::get('app\u max\u jobs\u on\u category')

我如何使管理员可以在后端编辑此值(最大作业数在类别上)?
是否每个用户都可以仅为自己编辑此内容?

我认为您最好为这些设置创建一个数据库模型。例如,您可以在过滤器中查询数据库(请参阅)

例如:

# apps/frontend/config/app.yml
all:
  active_days:          30
  max_jobs_on_homepage: 10
  max_jobs_on_category: 20
示例过滤器代码:

AppSetting:
  columns:
    id:
      type: integer(4)
      primary: true
    name:
      type: string(100)
      notnull: true
    value:
      type: string(100)
当然,在每个请求中加载所有这些设置都会有一些额外的开销,您可以根据需要查询它们:

$settings = Doctrine_Core::getTable('AppSetting')->fetchAll();
foreach ($settings as $setting) {
  sfConfig::set($setting->getName(), $setting->getValue());
}

或者您可以更进一步,为它们创建一些序列化缓存。但最后,如果您需要从web界面编辑它们,我会选择一个数据库解决方案。

非常感谢,缓存有什么用处?我必须在哪里添加过滤代码?在何处操作?请查看链接以了解有关筛选器以及如何创建筛选器的更多信息。我没有任何现成的创建缓存的示例,您必须自己研究一下可能的缓存解决方案。您应该将名称作为主键。id字段是不必要的。
$settings = Doctrine_Core::getTable('AppSetting')->fetchAll();
foreach ($settings as $setting) {
  sfConfig::set($setting->getName(), $setting->getValue());
}
Doctrine_Core::getTable('AppSetting')->findOneByName('some_setting')->getValue();