代码之家  ›  专栏  ›  技术社区  ›  Stephen Melrose

symfony(推进)管理生成器行为-为什么这样工作?

  •  1
  • Stephen Melrose  · 技术社区  · 15 年前

    我对管理生成器(推进版本)有一些“问题”。列表视图和表单视图之间的HTML生成行为非常不同,我想知道原因,因为表单视图比列表视图工作得更好(和预期的那样)。

    我有以下“编辑”动作的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() 如果不起作用。但是,列表操作代码只使用 链接到()。 函数,甚至不尝试使用助手。
    2. 表单操作代码将我的自定义确认消息传递给自定义帮助器方法,但两个模板都不将其传递给 Link() . 为什么会这样?我希望这是个虫子。

    如果有人能解释一下为什么两者产生的不同,我会非常感激。

    谢谢您。

    1 回复  |  直到 15 年前
        1
  •  0
  •   Arjan    15 年前

    管理生成器使用生成上述HTML/PHP的模板。默认主题位于:

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

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

    HTML/PHP代码不同,因为用于生成这些文件的模板是不同的,但是您可以通过创建自己的主题并在generator.yml中指定来根据自己的喜好修改它们。例如。:

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

    有关如何执行此操作的详细信息,请阅读 http://www.symfony-project.org/book/1_2/14-Generators