Generator.yml использует значение БД [Symfony] - PullRequest
0 голосов
/ 06 декабря 2011

Я новичок в использовании Symfony, и я не могу найти правильного решения своей проблемы.

Дело в том, что у меня есть бэкэнд-модуль со всей конфигурацией для сайта (sitename,элементов на странице, стиль по умолчанию).Я хочу настроить файл 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 из кода, поэтому, если я изменю это число в БД, оно будет мгновенно обновлено?

Заранее спасибо!

1 Ответ

0 голосов
/ 06 декабря 2011

К счастью, файлы .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: ~
  ...
...