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();
Или вы можете пойти еще дальше и создать для них сериализованный кэш. Но в конце концов, я бы пошел на решение для базы данных, если вам нужно отредактировать их из веб-интерфейса.