Symfony (Propel) 管理生成器行为 - 为什么它会这样工作?

发布于 2024-08-20 06:37:10 字数 1838 浏览 8 评论 0原文

我在管理生成器(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()。这是为什么呢?我希望这是一个错误。

如果有人能解释为什么两者生成不同,我真的很感激。

谢谢。

I've been having some 'issues' with the admin generator (Propel version). The HTML generation behavior between the list view and the form view is very different, and I'd like to know why, as the form view works better (and as expected) compared to the list view.

I have the following YAML for the 'edit' action,

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

This generates the following HTML/PHP for the custom action specified,

// 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 ...

Now, if I add my custom action to the YAML for the list view,

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

I get the following HTML generated,

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

There's some distinct differences here that I find very odd,

  1. The form actions code checks to see if there is a method on the helper, and uses it if so, falling back to a standard link_to() function if not. However, the list actions code just uses the link_to() function, not even trying to use the helper.
  2. The form actions code passes my custom confirm message to the custom helper method, but neither templates pass it to the link_to(). Why is this? I'm hoping this is a bug.

If someone could shed some light as to why the two generate differently, I'd really appreciate it.

Thank you.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

花想c 2024-08-27 06:37:10

管理生成器使用生成上述 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 代码有所不同,因为用于生成这些文件的模板不同,但您可以根据自己的喜好修改它们通过创建您自己的主题并在生成器.yml 中指定。例如:

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

有关如何执行此操作的更多信息,请阅读 http://www. symfony-project.org/book/1_2/14-生成器

The admin generator uses templates that generates the above HTML/PHP. The default theme is located at:

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

or

$sf_symfony_data_dir/generator/sfPropelAdmin/default/ (version 1.0)

The HTML/PHP code differs because the templates used to generate these files are different, but you can modify them to your likings by creating your own theme and specify that in the generator.yml. E.g.:

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

For more information about how to do that, read http://www.symfony-project.org/book/1_2/14-Generators

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文