管理ジェネレーター (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 ...
ここにはいくつかの明確な違いがあり、非常に奇妙に感じます。
- フォーム アクション コードは、ヘルパーにメソッドがあるかどうかを確認し、ある場合はそれを使用し、
link_to()
ない場合は標準関数にフォールバックします。ただし、リスト アクションのコードはlink_to()
関数を使用するだけで、ヘルパーを使用しようとさえしません。 - フォーム アクション コードはカスタム確認メッセージをカスタム ヘルパー メソッドに渡しますが、どちらのテンプレートもそれを
link_to()
. どうしてこれなの?これがバグであることを願っています。
2 つの生成方法が異なる理由について誰かが光を当てることができれば、本当に感謝しています。
ありがとうございました。