2011-12-06 12 views
0

私はsymfonyを使用して新しいです、私は私の問題に適切な解決策を見つけることができないようです。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:  ~ 

は、私はデシベルでその数を変更した場合、それは瞬時にリフレッシュされると思いますので、どこかのコードから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の値がキャッシュされるためです。プロダクションサーバでは即座に変更されません。 でも、私は、このリンクを見つけた:http://www.finalconcept.com.au/article/view/symfony-admingenerator-sfdoctrinepager-pass-a-page-size あり それが機能getPagerMaxPerPageをオーバーライドする方法を示し()でmoduleGeneratorConfiguration.class.php、これは十分に公正に行います。 ありがとう! – Vika

+0

ああ冷たい。次の機能に。 –

関連する問題