2011-12-06 3 views
0

저는 심포니를 처음 사용하여 제 문제에 대한 적절한 해결책을 찾을 수없는 것 같습니다.DB 값을 사용하는 Generator.yml [Symfony]

문제는 웹 사이트 (사이트 이름, 페이지 당 항목 수, 기본 스타일)에 대한 모든 구성을 포함하는 백엔드 모듈이 있다는 것입니다. 목록 필드에서 max_per_page 값을 고정 숫자가 아닌 데이터베이스에서 가져올 수 있도록 generator.yml 파일을 구성하고 싶습니다.

필자는 그 파일에서 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:  ~ 

내가 DB에 그 번호를 변경이 즉시 새로 고쳐 줄 곳, 그래서 만약 코드에서 max_per_page 값을 초기화 할 수있는 방법이 있습니까?

미리 감사드립니다.

답변

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: ~ 
    ... 
+1

감사합니다. 나는 그것을 시도했지만 문제는 그 max_per_page의 값이 캐싱 (cached)되어 프로덕션 서버에서 즉시 변경되지 않는다는 것이다. 나는이 링크를 발견했다. http://www.finalconcept.com.au/article/view/symfony-admingenerator-sfdoctrinepager-pass-a-page-size 여기에 getPagerMaxPerPage() 함수를 재정의하는 방법이 나와있다. moduleGeneratorConfiguration.class.php, 충분히 공정 할 것입니다. 감사합니다. – Vika

+0

아 멋지다. 다음 기능으로. –