У меня возникли некоторые проблемы с генератором администратора (версия Propel). Поведение генерации HTML между представлением списка и представлением формы сильно отличается, и я хотел бы знать, почему, поскольку представление формы работает лучше (и, как и ожидалось), по сравнению с представлением списка.
У меня есть следующий YAML для действия 'edit',
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 ...
Здесь есть некоторые отчетливые различия, которые я нахожу очень странными,
- Код действий формы проверяет, есть ли метод у помощника, и использует его в этом случае, возвращаясь к стандартной функции
link_to()
, если нет. Однако код списка действий просто использует функцию link_to()
, даже не пытаясь использовать помощника.
- Код действий формы передает мое пользовательское сообщение подтверждения пользовательскому вспомогательному методу, но ни один из шаблонов не передает его в
link_to()
. Почему это? Я надеюсь, что это ошибка.
Если бы кто-то мог пролить свет на то, почему эти двое генерируют по-разному, я был бы очень благодарен.
Спасибо.