редактировать значения в app.yml бэкэндом - PullRequest
0 голосов
/ 04 сентября 2011
public function executeShow(sfWebRequest $request)
{
  $this->category = $this->getRoute()->getObject();

  $this->pager = new sfDoctrinePager(
    'JobeetJob',
    sfConfig::get('app_max_jobs_on_category')
  );
  $this->pager->setQuery($this->category->getActiveJobsQuery());
  $this->pager->setPage($request->getParameter('page', 1));
  $this->pager->init();
}

sfConfig :: получить ( 'app_max_jobs_on_category')

# apps/frontend/config/app.yml
all:
  active_days:          30
  max_jobs_on_homepage: 10
  max_jobs_on_category: 20

как я могу сделать так, чтобы администратор мог редактировать эти значения (max_jobs_on_category) в бэкэнде? И возможно ли, что каждый пользователь может это редактировать только для себя?

1 Ответ

2 голосов
/ 04 сентября 2011

Я думаю, вам лучше создать модель базы данных для этих настроек.Затем вы можете запросить базу данных в фильтре, например (см. http://www.symfony -project.org / gentle-введение / 1_4 / ru / 06-Inside-the-Controller-Layer # chapter_06_sub_the_filter_chain ).

Например:

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());
}

Конечно, это дополнительные издержки для загрузки всех этих настроек при каждом запросе, вы можете просто запросить их, как вынужны они:

Doctrine_Core::getTable('AppSetting')->findOneByName('some_setting')->getValue();

Или вы можете пойти еще дальше и создать для них сериализованный кеш.Но, в конце концов, я бы выбрал решение для базы данных, если вам нужно редактировать их из веб-интерфейса.

...