редактировать значения в app.yml по бэкэнд

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) в бэкэнд? И возможно, что каждый пользователь может редактировать это только для себя?

Я думаю, что вам лучше создать модель базы данных для этих настроек. Затем вы можете запросить базу данных в фильтре (см. http://www.symfony-project.org/gentle-introduction/1_4/en/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(); 

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