Generator.yml使用DB值[Symfony]

时间:2011-12-06 00:40:59

标签: php symfony1 backend

我是使用symfony的新手,我似乎无法找到解决问题的正确方法。

问题是,我有一个后端模块,其中包含网站的所有配置(网站名称,每页项目数,默认样式)。我想配置generator.yml文件,所以在列表字段中我可以将max_per_page的值设置为不是静态数字,而是从数据库中获取。

我知道我可以在该文件中使用php代码,但由于它是缓存的,我不认为这是最好的解决方案。我的generator.yml文件如下所示:

generator:
class: sfDoctrineGenerator
param:
model_class:           PodcastUsers
theme:                 admin
non_verbose_templates: true
with_show:             false
singular:              ~
plural:                ~
route_prefix:          podcast_users
with_doctrine_route:   true
actions_base_class:    sfActions

config:
  actions: ~
  fields:  ~
  list:
    max_per_page: 10;
  filter:  ~
  form:    ~
  edit:    ~
  new:     ~

有没有办法从某个地方的代码初始化max_per_page值,所以如果我在db中更改那个数字,它会立即刷新?

提前致谢!

1 个答案:

答案 0 :(得分:0)

幸运的是.yml文件可以解析为PHP,因此您可以插入PHP代码。不知道如何存储此max_per_page值,但您可以创建或编辑现有模型文件并添加检索值的方法,然后将其包含在yaml文件中。以下仅为示范:

class MyModelTable
{
    public static function getMaxPerPage($myId)
    {
        // Assuming doctrine ORM
        $q = Doctrine_Query::create()
            ->from('MyTable mt')
            ->where('mt.id = ?', array($myId));

        $results = $q->fetchOne();

        return $results['max_per_page'];
    }
}

// Generator.yml
config:
  ...
  list:
    max_per_page: <?php echo MyModelTable::getMaxPerPage($someId) . PHP_EOL ?>
  filter: ~
  ...