2010-01-29 67 views
1

我一直與管理生成器(推進版)有一些'問題'。列表視圖和表單視圖之間的HTML生成行爲是非常不同的,我想知道爲什麼,因爲與列表視圖相比,表單視圖更好地(和預期的一樣)工作。Symfony(Propel)管理生成器行爲 - 爲什麼它會像這樣工作?

我對 '編輯' 行動以下YAML,

edit: 
    actions: 
    custom: { confirm: 'Run this custom action?' } 
    _list: ~ 
    _save: ~ 

這生成指定的自定義操作下面的HTML/PHP,

// Snip ... 
<li class="sf_admin_action_custom"> 
<?php if (method_exists($helper, 'linkToCustom')): ?> 
    <?php echo $helper->linkToCustom($form->getObject(), array( 'confirm' => 'Run this custom action?', 'params' => array(), 'class_suffix' => 'custom', 'label' => 'Custom',)) ?> 
<?php else: ?> 
    <?php echo link_to(__('Custom', array(), 'messages'), 'users/ListCustom?id='.$user->getId(), array()) ?> 
<?php endif; ?> 
</li> 
// Snip ... 

現在,如果我加入我的自定義行動的YAML列表視圖,

list: 
    object_actions: 
    custom: { confirm: 'Run this custom action?' } 
    _edit: ~ 
    _delete: ~ 

我得到生成以下HTML,

// Snip ... 
<li class="sf_admin_action_custom"> 
    <?php echo link_to(__('Custom', array(), 'messages'), 'users/ListCustom?id='.$user->getId(), array()) ?> 
</li> 
// Snip ... 

這裏有一些明顯的不同,我覺得很奇怪,

  1. 形式操作的代碼檢查,看是否有在幫助的方法,如果是使用它,回落到標準link_to()函數,如果沒有。但是,列表操作代碼只使用link_to()函數,甚至不嘗試使用幫助程序。
  2. 表單操作代碼將我的自定義確認消息傳遞給自定義幫助器方法,但都不將模板傳遞給link_to()。爲什麼是這樣?我希望這是一個錯誤。

如果有人可以闡明爲什麼兩個產生不同,我真的很感激它。

謝謝。

回答

0

管理生成器使用生成上述HTML/PHP的模板。默認主題位於:

sfConfig::get('sf_symfony_lib_dir')/plugins/sfPropelPlugin/data/generator/sfPropelModule/admin/。 (版本1.2)

$sf_symfony_data_dir/generator/sfPropelAdmin/default/(1.0版本)

的HTML/PHP代碼不同,因爲用來產生這些文件的模板是不同的,但你可以通過創建他們修改您的喜好您自己的主題,並指定在generator.yml中。例如: -

generator: 
    class: sfPropelGenerator 
    param: 
    model_class:   BlogArticle 
    theme:     customTheme 

有關如何做到這一點的更多信息,請閱讀http://www.symfony-project.org/book/1_2/14-Generators

+0

我可以,我現在,使用自定義的生成。但是,由於我無法理解的原因,缺省主題中存在缺陷和差異。我在symfony trac上提交了一張票。這對我來說似乎是錯誤的。 – 2010-02-10 12:25:59

+0

雖然我不認爲這是'正確的'答案,但它解決了我的問題,並且是我將會得到的最接近的答案。乾杯。 – 2010-02-11 12:01:05