【问题标题】:Symfony (Propel) Admin Generator Behavior - Why does it work like this?Symfony (Propel) Admin Generator 行为 - 为什么它会这样工作?
【发布时间】:2010-01-29 14:51:20
【问题描述】:

我在管理生成器(Propel 版本)方面遇到了一些“问题”。列表视图和表单视图之间的 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() 函数。但是,列表操作代码只使用了link_to() 函数,甚至没有尝试使用帮助程序。
  2. 表单操作代码将我的自定义确认消息传递给自定义帮助方法,但两个模板都没有将它传递给link_to()。为什么是这样?我希望这是一个错误。

如果有人能解释为什么两者的生成方式不同,我将不胜感激。

谢谢。

【问题讨论】:

    标签: php symfony1 admin generator propel


    【解决方案1】:

    管理生成器使用生成上述 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

    【讨论】:

    • 我可以并且现在正在使用自定义生成器。但是,由于我似乎无法理解的原因,默认主题存在错误和差异。我在 symfony trac 上提交了一张票。这对我来说似乎是错误的。
    • 虽然我不认为这是“正确”的答案,但它解决了我的问题,并且是我能得到的最接近的答案。干杯。
    猜你喜欢
    • 2014-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多